我一直在尝试在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()
我想要的是那里的数字,但是可以增加数据点之间的空间吗?
答案 0 :(得分:2)
如果y轴上有许多接近的数据点,它们会重叠。您可以避免显示所有这些内容。您只能显示一个非常接近的y-ticks。但其余部分可以在情节本身上显示(而不是在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)
在这种情况下,您根本不需要收集代码部分代码。但是如果你保留它,你可以在以后根据需要打开显示。