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

Python 如何仅显示条形图matplotlib的轮廓,python,matplotlib,Python,Matplotlib,我在matplotlib中以条形图的形式绘制数据,并尝试仅显示条形图的轮廓,使其显示为数据的“阶梯图” 我在下面添加了我的代码以及所需输出的图像 plt.bar(x,y,align='center',width=0.1,edgecolor='black',color='none') 我的情节是: 我想要的情节是: 有没有其他的图书馆可以制作这个?bar关键字参数似乎没有任何可能的参数。您的图像看起来像一个围绕每个x,y值水平的函数。以下代码对此进行了模拟: 对于每个x,y:创建两个新点,

我在matplotlib中以条形图的形式绘制数据,并尝试仅显示条形图的轮廓,使其显示为数据的“阶梯图”

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

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

我的情节是:

我想要的情节是:



有没有其他的图书馆可以制作这个?bar关键字参数似乎没有任何可能的参数。

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

  • 对于每个x,y:创建两个新点,一个在x-0.5处,另一个在x+0.5处,两者具有相同的y
  • 要在末端闭合形状,请在开始处添加(x[0]-0.5,0),在结束处添加(x[-1]+0.5,0)
附言:@AsishM。注释中提到matplotlib也有自己的step函数。如果该功能满足要求,请使用该功能。如果你需要一些额外的控制或变化,这个答案可以给你一个开始,比如给曲线下面的区域上色或者在末端处理形状


步进绘图是否有效@阿西什。是的,这很好用,谢谢!我应该知道matplotlib会有一个函数来实现这个。。。facepalmsThat实际上是一个很棒的黑客,但是Asish推荐matplotlib中的step函数解决了这个问题!我不知道步进函数,所以我设计了自己的。。。也许这会给你一点额外的灵活性和控制力,尤其是在终点。
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')