matplotlib中的直方图图形线条样式

时间:2014-01-23 13:36:28

标签: python matplotlib plot histogram

我需要在同一个图中绘制两个直方图并且存在重叠。我使用像

这样的命令
plt.hist(data1,bins=40,normed=True,histtype='step')
plt.hist(data2,bins=40,normed=True,histtype='step')

为了区分这两个不同的直方图(需要以黑色和白色呈现它们),我想让其中一个以虚线而不是实线显示,所以我试过

plt.hist(data1,bins=40,normed=True,histtype='step',ls='--')

给了我以下错误消息:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 1475, in __call__
    return self.func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 534, in callit
    func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backends/backend_tkagg.py", line 363, in idle_draw
    self.draw()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backends/backend_tkagg.py", line 348, in draw
    FigureCanvasAgg.draw(self)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backends/backend_agg.py", line 451, in draw
    self.figure.draw(self.renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/artist.py", line 56, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/figure.py", line 1035, in draw
    func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/artist.py", line 56, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/axes.py", line 2088, in draw
    a.draw(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/artist.py", line 56, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/patches.py", line 401, in draw
    gc.set_linestyle(self._linestyle)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backend_bases.py", line 962, in set_linestyle
    raise ValueError('Unrecognized linestyle: %s' % str(style))
ValueError: Unrecognized linestyle: --

我的问题是,如何更改线条样式(实线/虚线和颜色)?或者是否有另一种方法可以用期望的线条样式绘制这两个直方图?

2 个答案:

答案 0 :(得分:13)

您导入了所需的所有库吗?此外,有时并非所有的线条都适用于所有情节类型。例如,有些线条适用于不适用于矢量的图形(即使它们看起来应该如此)。如果符号名称不起作用' - ',最好尝试命名版本'dashed'。

您可以在绘图参数中提供线条样式(或颜色,宽度等)的元组,就像在example from the matplotlib docs linewidths上的plt.hist(data1,bins=40,normed=True,histtype='step',linestyle=('solid','dashed')) 所做的那样(线宽为Ctrl + F)< / p>

使用plot命令,它应该如下所示:

color

您可以指定一个linestyle参数,就像plt.hist(data1,bins=40,normed=True,histtype='step',linestyle=('solid','dashed'),color=('black','k')) 的完成方式一样。绘制线条时,pyplot会查看您提供的每个元组中的第一个项目。因此,如果你想要一条纯黑线和一条黄色虚线,它看起来像

{{1}}

因此'solid'应与'black'配对,'dashed'应与'k'配对。这应该适用于您要使用的任何其他行属性。

答案 1 :(得分:0)

edgeColor 参数在我的系统上有效。

plot.hist (bins = 10, xlim = [0.0,1], ylim = [0.0,70], color = 'blue', edgeColor = 'black')