如何仅显示条形图的轮廓matplotlib

时间:2019-12-22 17:46:28

标签: python matplotlib

我正在 matplotlib 中以条形图的形式绘制数据,并试图仅显示条形的轮廓,以便它显示为数据的“阶梯图”。

我在下面添加了我的代码以及所需输出的图像。

plt.bar(x, y, align='center', width=0.1, edgecolor='black', color='none')

我的情节:

Current Plot

我想要的情节:

enter image description here


还有其他库可以产生此结果吗? bar 关键字参数似乎没有任何东西可以实现。

1 个答案:

答案 0 :(得分:2)

您的图像看起来像一个在每个x,y值周围水平的函数。以下代码对此进行了模拟:

  • 对于每个x,y:在x-0.5处创建两个新点,在x + 0.5处创建一个新点,两者均具有相同的y
  • 要在末端封闭形状,请在开头添加(x [0] -0.5,0),并在结尾添加(x [-1] +0.5,0)。
import numpy as np
from matplotlib import pyplot as plt

x = np.arange(0, 30, 1)
y = np.random.uniform(2, 10, 30)
xs = [x[0] - 0.5]
ys = [0]
for i in range(len(x)):
    xs.append(x[i] - 0.5)
    xs.append(x[i] + 0.5)
    ys.append(y[i])
    ys.append(y[i])
xs.append(x[-1] + 0.5)
ys.append(0)
plt.plot(xs, ys, color='dodgerblue')
# optionally color the area below the curve
plt.fill_between(xs, 0, ys, color='gold')

PS:@AsishM。在评论中提到,matplotlib也具有自己的步进功能。如果该功能实现,请使用该功能。如果需要一些额外的控制或变化,此答案可以作为一个开始,例如为曲线下方的区域着色或处理末端的形状。

example plot