Matplotlib 当x值为'时,如何避免plt.bar中的重叠条;t间隔均匀?

Matplotlib 当x值为'时,如何避免plt.bar中的重叠条;t间隔均匀?,matplotlib,Matplotlib,我有 然后我写 x = array([0., 0.08, 0.12, 0.18, 0.27, 0.42, 0.65]) y = array([0., 0.03758546, 0.06577713, 0.48786205, 0.28553257, 0.09909356, 0.02414922]) 我得到下面的图表。为什么会是这样,我如何才能使条形图不像其他条形图那样重叠和清晰 您的实际x值比默认的条宽小得多,这会使条重叠。您需要使用较小的条形宽度,例如0.02,这与较小的x值相当 plt.ti

我有

然后我写

x = array([0., 0.08, 0.12, 0.18, 0.27, 0.42, 0.65])

y = array([0., 0.03758546, 0.06577713, 0.48786205, 0.28553257, 0.09909356, 0.02414922])
我得到下面的图表。为什么会是这样,我如何才能使条形图不像其他条形图那样重叠和清晰


您的实际x值比默认的条宽小得多,这会使条重叠。您需要使用较小的条形宽度,例如0.02,这与较小的x值相当

plt.ticklabel_format(useOffset=False)
plt.figure(figsize=(20,10))
plt.xlabel('D/Dmax')

plt.bar(x, y), align = 'edge', tick_label = x, color = 'red', edgecolor = "black")

由于条形图的宽度不是恒定的,您可以将这些宽度计算为x值之间的差值:
np.diff(x)
。请注意,与
x
中的元素相比,差异小一个。要获得最后一条的宽度(理论上可能是无限的),可以重复上一条的下一条宽度,或者添加一个额外的
x
-值来设置最右边的边界

从matplotlib导入pyplot作为plt
将numpy作为np导入
x=np.数组([0,0.08,0.12,0.18,0.27,0.42,0.65])
y=np.数组([0,0.03758546,0.06577713,0.48786205,0.28553257,0.09909356,0.02414922])
宽度=np.焊盘(np.差异(x),(0,1),‘边缘’)
plt.图(figsize=(20,10))
plt.xlabel('D/Dmax')
打印条(x,y,宽度=宽度,对齐=边缘,勾号标签=x,颜色=红色,边缘颜色=黑色)
plt.show()

在这种情况下,x的逻辑扩展可以包括
1

从matplotlib导入pyplot作为plt
将numpy作为np导入
x=np.数组([0,0.08,0.12,0.18,0.27,0.42,0.65])
x=np.concatenate([x,[1]]))
y=np.数组([0,0.03758546,0.06577713,0.48786205,0.28553257,0.09909356,0.02414922])
宽度=np.差异(x)
plt.图(figsize=(20,10))
plt.xlabel('D/Dmax')
打印条(x[:-1],y,宽度=宽度,对齐=边缘,颜色=红色,边颜色=黑色)
plt.xticks(x)
plt.show()

plt.bar(x, y, align='edge', tick_label=x, color='red', edgecolor="black", 
        width=0.02)