2016-12-02 20 views
3

ちょっとした情報:私はプログラミングが初めてで、これは私の最初のスクリプトの一部です。この特定のセグメントの目標は、y軸上に垂直方向の深さ、x軸上の時間、および熱関数としての科学的測定の強度を有する海底ヒートマップを表示することです。ヒートマップの日付軸シーボーン

これは他の場所で回答されている場合は謝罪したいと思いますが、私の検索能力は私には失敗しているに違いありません。

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) 

これはので、私はデータフレームからの書式は、私が欲しいフォーマット、特に年、日、月であるかなり確信している「プリント(Dp.date」)から印刷し何 です。

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など)で印刷します。 日付軸からこれらを削除する方法はありますか?

上記のセルでは、この関数を使用してファイル名をスキャンし、日付を含む列を作成するという問題がありますか?日付関数の代わりにdatetimeを使うのは間違っていますか?

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

enter image description here

+0

あなたが含まれるように、それを編集した場合、それが役立つだろう他の人がそれを実行して問題を見ることができるように、最小限の完全に動作するスクリプト。 –

+0

返信ありがとうございますが、日付、深度などの値を含むpandasデータフレームをアップロードする方法がわからないので、機能するスクリプトをアップロードする方法がわかりません。基本的なmatplotlibプロットでは時刻の書式は表示されず、日付のみが表示されるため、Seabornとは何かを知っています。実際には、matplotlibプロットは日付軸を文字列として出力します(2008年8月8日など)。 – frankshort

+0

matplotlib軸の日付ラベルの書式設定に関する多くの疑問が既にあります。 –

答えて

3

あなたは正しくラベルをXTICKプロットするデータフレームのあなたの日付のシリーズのための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

関連する問題