私は自分の質問に対する答えを無駄なく探し求めていたので、新しい質問が順調だと思います。軸の目盛りを外す
ラベルは、科学的表記法を使用して軸:このプロットを考えてみましょう。 y軸ではすべてが順調です。しかし、私はPythonが右下隅に追加した倍率を取り除いてみましたが、失敗しました。私はこの要素を完全に取り除き、軸のタイトルの単位でそれを示すか、それをすべての目盛りのラベルに掛けてください。すべてはこの醜い1e14
よりよく見えるだろう。
import numpy as np data_a = np.loadtxt('exercise_2a.txt')
import matplotlib as mpl
font = {'family' : 'serif',
'size' : 12}
mpl.rc('font', **font)
import matplotlib.pyplot as plt
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
subplot.plot(data_a[:,0], data_a[:,1], label='$T(t)$', linewidth=2)
subplot.set_yscale('log')
subplot.set_xlabel("$t[10^{14}s]$",fontsize=14)
subplot.set_ylabel("$T\,[K]$",fontsize=14)
plt.xlim(right=max(data_a [:,0]))
plt.legend(loc='upper right')
plt.savefig('T(t).pdf', bbox_inches='tight')
アップデート:ここで
はコードだ私のスクリプトにscientificNotation
の組み込みウィルの実装で、プロットは今
ようにあなたは私に言わせれば非常に良く見えます。ここではそれの一部を採用したい人のための完全なコードは次のとおりです。
import numpy as np
data = np.loadtxt('file.txt')
import matplotlib as mpl
font = {'family' : 'serif',
'size' : 16}
mpl.rc('font', **font)
import matplotlib.pyplot as plt
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
subplot.plot(data[:,0], data[:,1], label='$T(t)$', linewidth=2)
subplot.set_yscale('log')
subplot.set_xlabel("$t[s]$",fontsize=20)
subplot.set_ylabel("$T\,[K]$",fontsize=20)
plt.xlim(right=max(data [:,0]))
plt.legend(loc='upper right')
def scientificNotation(value):
if value == 0:
return '0'
else:
e = np.log10(np.abs(value))
m = np.sign(value) * 10 ** (e - int(e))
return r'${:.0f} \cdot 10^{{{:d}}}$'.format(m, int(e))
formatter = mpl.ticker.FuncFormatter(lambda x, p: scientificNotation(x))
plt.gca().xaxis.set_major_formatter(formatter)
plt.savefig('T(t).pdf', bbox_inches='tight', transparent=True)
チップをありがとう。プロットが消えてスケールファクタが残っていたので、以前は簡単に試してみましたが、うまくいかないと思っていました。私は昨日Pythonを使い始めました。それ以来、それは多くの文法ミスの1つと考えていました。しかし、あなたがそれを持ってきたので、私はもう一度チェックして、最初に間違っていることに気付きました。 'pl.x.xlim(right = max(data_a) 'のように' put.xlim'に再スケーリングを追加することを忘れてしまったからです。 [:、0])/ 1e14)。 – Casimir
また、すべての目盛りのラベルに因子が表示される方法も知っていますか?それは、軸ラベルの大きさの順序が変化した場合に、周囲をひっくり返すことをはるかに少なくすることを意味します。 – Casimir
@Casimir:うん、あなたは 'formatter'を設定する必要があります。私の答えを参照してください – tom