15

使用直方图,有一个简单的内置选项histtype='step'。如何制作相同风格的条形图?

4

3 回答 3

15

[阅读评论后添加答案]将可选关键字设置fill=False为条形图:

import matplotlib.pyplot as plt

plt.bar(bins[:5], counts[:5], fill=False, width=60)  # <- this is the line

plt.title("Number of nodes with output at timestep")
plt.xlabel("Node count")
plt.ylabel("Timestep (s)")

会给: 在此处输入图像描述

plt.plot与关键字一起使用ls='steps'

plt.plot(bins[-100:], counts[-100:], ls='steps')
plt.title("Number of nodes with output at timestep")
plt.xlabel("Node count")
plt.ylabel("Timestep (s)")

在此处输入图像描述

于 2015-08-27T21:58:15.790 回答
8

尽管 OP 链接到一个帖子,该帖子回答了与直方图阶梯图有关的稍微不同的问题,但对于通过这里的任何人来说,这是一个解决方案,他们专门试图关闭pyplot.bar条形图中的面部颜色:

import matplotlib.pyplot as plt
import numpy as np

# create x coords for the bar plot
x = np.linspace(1, 10, 10)

# cook up some random bar heights -- exact results may vary :-P
y = np.random.randn(10)
z = np.random.randn(10) * 2

# plot bars with face color off
plt.bar(x-0.2, y, width=0.4, edgecolor='purple', color='None')
plt.bar(x+0.2, z, width=0.4, edgecolor='darkorange', color='None')
plt.show()

在此处输入图像描述

请注意,条形边缘具有可设置的matplotlib.lines.Line2D属性,例如linewidthlinestylealpha等:

plt.bar(x-0.2, y, width=0.4, edgecolor='purple', color='None', 
linewidth=0.75, linestyle='--')
plt.bar(x+0.2, z, width=0.4, edgecolor='darkorange', color='None',
linewidth=1.5, linestyle='-.')
plt.show()

在此处输入图像描述

于 2018-03-21T18:55:43.440 回答
0

我看到你找到了关于这个其他主题的答案,但我感觉matplotlib.pyplot.step也能完成这项工作,而且更直接(见这里)。

编辑:根据要求,一些示例代码来说明plt.step

import matplotlib.pyplot as plt
plt.step(list(range(10)),list(range(5))+list(range(5)))
于 2019-12-03T18:33:23.923 回答