在Matplotlib的直方图中绘制x轴刻度

4

我希望能根据给定的名称绘制相应的x轴。也就是说,对于foo,需要以直方图的形式绘制[10,20,30],并且所有的foo、bar、baz都需要在同一个图表中显示。(不需要3D:))

import pylab as P
name = ['foo', 'bar', 'baz']
x  = [[10,20,30],[40,50,60],[70,80,90]]

P.figure()
P.hist(x, 10,  histtype='bar',
                color=['crimson', 'burlywood', 'chartreuse'],
                label=['Crimson', 'Burlywood', 'Chartreuse'])

P.show()

请解释您需要什么。将[10,20,30]绘制为直方图是什么意思? - joaquin
你能帮我绘制附图中的图形吗?我尝试过了,但失败了。 - pistal
1个回答

6
希望这可以帮助你:
from matplotlib import pyplot as plt
import numpy as np

names = ['foo', 'bar', 'baz']
x  = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
colors = ['crimson', 'burlywood', 'chartreuse']

y = zip(*x)
groups = len(x)
members = len(y)
pos = np.arange(groups)
width = 1. / (1 + members)

fig, ax = plt.subplots()    
for idx, (serie, color) in enumerate(zip(y, colors)):
    ax.bar(pos + idx * width, serie, width, color=color)

ax.set_xticks(pos + width)
ax.set_xticklabels(names)

plt.show()

enter image description here


1
我建议使用 ax.set_xticks(pos + 1.5*width) 来将标签居中放置在组下方。 - SpinUp __ A Davis
@spinup 对,谢谢。我们可以让 OP 优化视图并了解正在进行的操作。 - joaquin
我理解了。非常感谢。 - pistal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接