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)