前提・実現したいこと
Pythonで実験で得たデータを解析しています。
例えばある物理量の時間依存の温度依存性をとったとして、
色で強度を表した二軸のカラーマップを作成したいです。
plt.pcolor()を使用してかなり近いことはできているんですが、
軸が意図したものと違っていて困っています。
python
1x=np.arange(1,1001,1)*1e-3 #time 2y=np.arange(20,151,10) #temp 3(i,j)=(0,0) 4Z=np.zeros((len(x),len(y))) 5for X in x: 6 for Y in y: 7 Z[i][j]=10*(1-np.exp(-X/10*Y)) 8 if Y==20: 9 Z[i][j]=1 10 if Y==150: 11 Z[i][j]=1 12 j+=1 13 i+=1 14 j=0 15plt.pcolor(y,x,np.log(Z)) 16plt.yscale('log') 17plt.show() 18plt.close()
出力画像

20Cなどのメモリ位置がデータの左側に
表示されるため、25Cのデータのように見える。
X軸をずらしてメモリ位置を各データの真下にできますか?
また150Cのデータが表記されません。
この問題を解決する方法を教えてください。
試したこと
plt.pcolor()ではlog表記できますが、X軸の位置がおかしいです。seaborn.heatmap()は、X軸の位置は良く全てのデータを表示できるのですが、
Y軸のlog表記を達成する方法が分かりませんでした。
python
1df = pd.DataFrame(data=Z, columns=y,index=x) 2ax = seaborn.heatmap(df)
質問がよくわからないので、「前提・実現したいこと」に質問を記述してください。
> 軸が意図したものと違っていて困っています
意図したもの、とは何でしょうか?
> Y軸をlogで表記できる解決策を教えて
logで表記できています。
「発生している問題・エラーメッセージ」は質問を表記するところではありませんが、そこも意味がわかりませんでした。
> 150Cのデータは恐らく見えていない。
見えているのでは?
> 20Cなどもできれば、棒グラフのように真下にあるほうが良い
x軸は20以上しかデータが無いのであたりまえでは?無理やり見た目をずらしたら(簡単にできますが)図の中に空白ができちゃいますが、よいのでしょうか?
修正しました。seabornのheatmapならXの値を真下に表記できるのですが、Y軸をlog表記できませんでした。
Y軸はlog表示されてますよね?
plt.pcolor()ではlog表記できますが、X軸の位置がおかしいです。seaborn.heatmap()は、X軸の位置は良いのですが、Y軸のlog表記を達成できませんでした。
・質問者さんが表示したいグラフ画像(手書きでも可)
・plt.pcolor()でのコードとグラフ画像
・seaborn.heatmap()でのコードとグラフ画像
を質問に書かないと状況が回答者に伝わりません。
> また150Cなど、右端に来るべきデータが表記されません。
これについてはグラフにデータは表示されています。軸ラベルが表示されていないだけですね。
meg_さん:
ありがとうございます。
すみません、分かりにくくて申し訳ありませんでした。
追加しました。これでどうでしょうか。
>これについてはグラフにデータは表示されています。軸ラベルが表示されていないだけですね。
本当ですか?
print(plt.xlim())で表示範囲が出ますので確認してみてください
回答2件
あなたの回答
tips
プレビュー


