YTick在Matplotlib中重叠

时间:2016-10-11 01:35:12

标签: python 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()

enter image description here

我想要的是那里的数字,但是可以增加数据点之间的空间吗?

1 个答案:

答案 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()

<强>输出: enter image description here

您也可以完全关闭在y轴上显示 yticks 。在这种情况下,请将此行plt.yticks(yticks)更改为:plt.yticks(yticks, visible=False) 在这种情况下,您根本不需要收集代码部分代码。但是如果你保留它,你可以在以后根据需要打开显示。