2016-12-02 1 views
3

약간의 정보 : 저는 프로그래밍에 익숙하지 않습니다. 이것은 제 첫 번째 스크립트의 일부분입니다. 이 특정 세그먼트의 목표는 y 축상의 수직 깊이, x 축상의 시간 및 과학적 측정 강도를 열 기능으로 사용하는 해저 히트 맵을 표시하는 것입니다.히트 맵에서 날짜 축 seaborn

다른 답변이있는 경우 사과하고 싶지만 내 검색 능력이 실패한 것 같습니다. 이것은 '인쇄 (Dp.date)' 에서 인쇄 무엇이다

sns.set() 
nametag = 'Well_4_all_depths_capf' 
Dp = D[D.well == 'well4'] 
print(Dp.date) 


heat = Dp.pivot("depth", "date", "capf") 
### depth, date and capf are all columns of a pandas dataframe 

plt.title(nametag) 

sns.heatmap(heat, linewidths=.25) 

plt.savefig('%s%s.png' % (pathheatcapf, nametag), dpi = 600) 

그래서 dataframe에서 서식을 내가 원하는 형식, 특히 연도, 일, 월에 확신 해요.

0 2016-08-09 
1 2016-08-09 
2 2016-08-09 
3 2016-08-09 
4 2016-08-09 
5 2016-08-09 
6 2016-08-09 
     ...  

그러나 내가 실행할 때 날짜 축은 항상 원하지 않는 빈 시간 (00:00 등)으로 인쇄합니다. 날짜 축에서 이것을 제거하는 방법이 있습니까?

위의 셀에서이 함수를 사용하여 파일 이름을 검색하고 날짜가있는 열을 만드는 데 문제가 있습니까 ??? ??? date 함수 대신 datetime을 사용하는 것은 잘못된 일입니까? enter image description here

+0

이 포함하도록 편집 된 경우 도움이 될 다른 사람이 그것을 실행하고 문제를 볼 수 있도록 최소한의 완전히 작동하는 스크립트. –

+0

답장을 보내 주셔서 감사합니다. 그러나 날짜, 깊이 등 값이 포함 된 팬더 데이터 프레임을 업로드하는 방법을 모르겠습니다. 따라서 작동하는 스크립트를 업로드하는 방법을 모르겠습니다. 것은, 그것이 기본 matplotlib 플롯은 시간 형식을 표시하지 않기 때문에, 그것은 날짜 만이 Seaborn과 함께한다는 것을 알고 있습니다. 실제로 matplotlib 플롯은 날짜 축을 문자열로 인쇄합니다 (Aug 8 2016). – frankshort

+0

matplotlib 축의 날짜 레이블을 포맷하는 것과 관련하여 많은 질문이 이미 있습니다. –

답변

3

D['date']=pd.to_datetime(['%s-%s-%s' %(f[0:4],f[4:6],f[6:8]) for f in    
D['filename']]) 

당신은 제대로 라벨을 XTICK 음모 dataframe의 날짜 시리즈의 strftime 기능을 사용할 수 있습니다

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
from datetime import datetime, timedelta 
import random 

dates = [datetime.today() - timedelta(days=x * random.getrandbits(1)) for x in xrange(25)] 
df = pd.DataFrame({'depth': [0.1,0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001],\ 
'date': dates,\ 
'value': [-4.1808639999999997, -9.1753490000000006, -11.408113999999999, -10.50245, -8.0274750000000008, -0.72260200000000008, -6.9963940000000004, -10.536339999999999, -9.5440649999999998, -7.1964070000000007, -0.39225599999999999, -6.6216390000000001, -9.5518009999999993, -9.2924690000000005, -6.7605589999999998, -0.65214700000000003, -6.8852289999999989, -9.4557760000000002, -8.9364629999999998, -6.4736289999999999, -0.96481800000000006, -6.051482, -9.7846860000000007, -8.5710630000000005, -6.1461209999999999]}) 
pivot = df.pivot(index='depth', columns='date', values='value') 

sns.set() 
ax = sns.heatmap(pivot) 
ax.set_xticklabels(df['date'].dt.strftime('%d-%m-%Y')) 
plt.xticks(rotation=-90) 

plt.show() 

enter image description here

관련 문제