[英]YTick overlapping in Matplotlib
我一直在嘗試在 Matplotlib 上繪制數據,但我似乎有重疊的 YTicks。 我不確定如何調整它們。
代碼
import matplotlib.pyplot as plt
data= [4270424, 4257372, 4100352, 4100356, 4100356]
plt.figure(figsize=(10,5))
plt.plot(data, 'ko-')
plt.ylabel('Data point')
plt.xlabel('Iteration point')
plt.yticks(data)
plt.margins(0.05, 0.1)
plt.show()
我想要的是數字在那里,但是否有可能增加數據點之間的空間?
如果 y 軸上有許多接近的數據點,它們就會重疊。 您可以避免顯示所有這些。 您只能顯示一個太近的 y 刻度線。 但其余的可以顯示在繪圖本身上(而不是在 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)
在這種情況下,您根本不需要收集部分代碼的刻度。 但是如果你保留它,你可以在需要時打開顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.