14

インデックス 1,2,3....n の x_axis ラベルを別のものに設定するにはどうすればよいですか。

lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)]
chunks = [chunk1,chunk2,...chunk_n]
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...}
color='rgbycmk'
     j=0
     for chunk in chunks:
        plt.plot([hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)],[i for i,item in enumerate(lam_beta)],color=j%len(color))
        j+=1

     plt.set_xticks([i for i,item in enumerate(lam_beta)])
     plt.set_xticklabels([item for item in lam_beta],rotation='vertical')
     plt.show()

エラー:

AttributeError: 'module' オブジェクトには属性 'set_xticks' がありません

ここでは、lambda_beta タプルの値を x 軸の各目盛りの値に設定することはできません。plt にはそのような方法がないからです。pltでこれを達成するにはどうすればよいですか?これは、matplotlib でヒストグラムを生成するときに行った方法であるため、xticks を使用しました。どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

28

set_xticksset_xticklabelsは軸メソッドであり、pltモジュール名前空間の関数ではありません。これが、エラー メッセージの意味です'module' object has no attribute 'set_xticks'

さらに、

[i for i,item in enumerate(lam_beta)]

に簡略化できます

range(len(lam_beta))

[item for item in lam_beta]

に簡略化できます

lam_beta

を手に入れる便利な方法は、 plt.subplotsaxesを呼び出す ことです。

そう:

fig, ax = plt.subplots()
...
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')

axAxesオブジェクトです。メソッドの呼び出しAxesは、matplotlib を使用するためのオブジェクト指向のアプローチです。


pylabまたは、 を呼び出して Matlab スタイルのインターフェイスを使用することもできますplt.xticks。定義すると

loc = range(len(lam_beta))
labels = lam_beta

それから

plt.xticks(loc, labels, rotation='vertical')

と同等です

fig, ax = plt.subplots()
ax.set_xticks(loc)
ax.set_xticklabels(labels, rotation='vertical')

plt.xticks目盛りの位置とラベルを現在の座標軸に設定します。


リスト内包表記

[hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)]

に簡略化できます

hr_values_per_chunk[chunk][:len(lam_beta)]

また、 ax.set_color_cycleを使用してcolor、呼び出しごとにパラメーターを設定することを避けることができます。ax.plot

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)]
chunks = [chunk1,chunk2,...chunk_n]
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...}
color='rgbycmk'
ax.set_color_cycle(colors)

for chunk in chunks:
    vals = hr_values_per_chunk[chunk][:len(lam_beta)]
    ax.plot(vals, range(len(lam_beta)))

ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
plt.show()
于 2013-12-02T18:46:10.880 に答える