いずれかの軸に目盛りや数字のない図をプロットしようとしています(matplotlibの命名法ではなく、伝統的な意味で軸を使用しています!)。私が遭遇した問題は、matplotlibが値Nを減算してx(y)ticklabelsを調整し、軸の最後にNを追加する場所です。
これはあいまいかもしれませんが、次の簡略化された例は問題を強調しており、「6.18」が問題のあるNの値です。
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
私が知りたい3つのことは:
そもそもこの動作をオフにする方法(ほとんどの場合、便利ですが、常にそうとは限りません!)matplotlib.axis.XAxis
を調べたところ、適切なものが見つかりません
Nを非表示にする方法(つまりX.set_visible(False)
)
とにかく上記を行うより良い方法はありますか?関連する場合、私の最終的なプロットは、図の4x4サブプロットになります。
各要素を非表示にする代わりに、軸全体を非表示にすることができます。
frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)
あるいは、目盛りを空のリストに設定することもできます。
frame1.axes.get_xaxis().set_ticks([])
frame1.axes.get_yaxis().set_ticks([])
この2番目のオプションでは、plt.xlabel()
とplt.ylabel()
を使ってラベルをAxesに追加することができます。
グリッド線を維持しながら軸テキストだけを隠したい場合は、次のようにします。
frame1 = plt.gca()
frame1.axes.xaxis.set_ticklabels([])
frame1.axes.yaxis.set_ticklabels([])
set_visible(False)
またはset_ticks([])
を実行すると、グリッド線も非表示になります。
あなたが私のようで、図をプロットするときに常にax
という軸を取得しないのであれば、簡単な解決策は
plt.xticks([])
plt.yticks([])
やや古いスレッドですが、これは最新バージョンのmatplotlibを使ったより速い方法のようです:
x軸のメジャーフォーマッタを設定する
ax.xaxis.set_major_formatter(plt.NullFormatter())
私は実際には(答えで受け入れられたものでさえ)ここにコードスニペットのどれに基づいてもボーダーまたは軸データなしで画像をレンダリングすることができませんでした。いくつかのAPIドキュメントを調べた後、私は自分のイメージをレンダリングするためにこのコードを使いました。
plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off')
plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0)
tick_params
呼び出しを使用して、表示される可能性のある余分な情報を基本的にすべて停止しました。出力ファイルには完璧なグラフがあります。
プロセスを簡単にするためにこの数字を色分けしました。
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
これらのコマンドを使用してFigureを完全に制御し、スプラインの制御も追加して答えを完成させることができます。
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
# X AXIS -BORDER
ax.spines['bottom'].set_visible(False)
# BLUE
ax.set_xticklabels([])
# RED
ax.set_xticks([])
# RED AND BLUE TOGETHER
ax.axes.get_xaxis().set_visible(False)
# Y AXIS -BORDER
ax.spines['left'].set_visible(False)
# YELLOW
ax.set_yticklabels([])
# GREEN
ax.set_yticks([])
# YELLOW AND GREEN TOGHETHER
ax.axes.get_yaxis().set_visible(False)
オブジェクト指向APIを使用する場合、Axes
オブジェクトは軸テキストを削除するための2つの便利なメソッド、 set_xticklabels()
と set_xticks()
を持ちます。
次のようにしてプロットを作成したとします。
fig, ax = plt.subplots(1)
ax.plot(x, y)
目盛ラベルを削除したいだけの場合は、次のようにします。
ax.set_xticklabels([])
またはダニを完全に削除するには、使用することができます
ax.set_xticks([])
これらのメソッドは、目盛りを付ける場所とラベル付け方法を正確に指定するのに役立ちます。空のリストを渡すと、それぞれ目盛りもラベルも表示されません。
1つのトリックは、目盛ラベルの色を白にして隠すことです。
plt.xticks(color='w')
plt.yticks(color='w')