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

Gur*_*fle 6 python matplotlib

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

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

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

我有的情节:

当前情节

我想要的情节:

在此处输入图片说明


有没有其他图书馆可以产生这个?该酒吧的关键字参数似乎没有任何可以。

Joh*_*anC 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')
Run Code Online (Sandbox Code Playgroud)

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

示例图