y軸に近いデータポイントが多数ある場合、重複します。それらのすべてを表示することは避けることができます。あまりにも近すぎるy-ティックの1つだけを表示することができます。しかし残りはプロット自体に表示されます(y軸ではありません)。そのような何かを使用することができます
:
import matplotlib.pyplot as plt
data= [4270424, 4257372, 4100352, 4100356, 4100356]
fig, ax = plt.subplots(figsize=(10,8))
#Collect only those ticks that are distant enough from each other
#in order to get rid of ticks overlapping on y-axis:
yticks = [min(data)]
for i in sorted(data[0:]):
if i-yticks[-1] > 3500:
yticks.append(i)
#################################################################
plt.plot(data, 'ko-')
plt.ylabel('Data point', fontsize=12)
plt.xlabel('Iteration point', fontsize=12)
plt.yticks(yticks)
plt.margins(0.05, 0.1)
#Showing y-ticks right on the plot
offset = -1.45
x = ax.get_xticks()
for xp, yp in zip(x, data):
label = "%s" % yp
plt.text(xp-offset, yp+offset, label, fontsize=12, horizontalalignment='right', verticalalignment='bottom')
#################################
ax.grid()
plt.show()
出力:
また、完全にy軸上yticksを表示オフに切り替えることができます。この場合、この行をplt.yticks(yticks)
に変更してください:plt.yticks(yticks, visible=False)
この場合、コードの一部を収集するティックは必要ありません。しかし、それを保持しておけば、必要に応じて後で表示をオンにすることができます。
ただ3つのy-ティックを設定しないのはなぜですか? 'plt.yticks([4270424、4257372、4100356])'データポイントを変更せずにデータポイント間のスペースを増やすことはできません。その差はログスケールにさえ表示されません。 –
@VlasSokolov私は実際に数字を見たいと思う、これらのわずかな変更が重要です。 – Akshay
@VlasSokolovに感謝します。データ自体を変更することはできますが、それは意味がありません。また、ログのような変換を使用することもできます。しかし、単純なログは、データの大きさと相対的な違いのために、このケースであなたを助けません。あなたは 'plt.semilogy(data-np.min(data)+1、 'ko - ')'を実行することができますが、あなたはその解釈を混乱させ、他の点は束ねられます。数値に焦点を当てているのであれば、プロットに加えてテーブルを使うべきでしょうか?または、関心のある個々の点に注釈を付けるか?通常、プロットを見るとき、あなたは何かの一般的な振る舞いを集めています。 – tsj