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

wdg*_*wdg 5 python plot matplotlib histogram

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

plt.hist(data1,bins=40,normed=True,histtype='step')
plt.hist(data2,bins=40,normed=True,histtype='step')
Run Code Online (Sandbox Code Playgroud)

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

plt.hist(data1,bins=40,normed=True,histtype='step',ls='--')
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误信息:

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: --
Run Code Online (Sandbox Code Playgroud)

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

gfr*_*itz 13

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

您可以在plot参数中提供线条样式(或颜色,宽度等)的元组,就像在matplotlib文档中linewidths对此示例所做的一样(Ctrl + F表示线宽)

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

plt.hist(data1,bins=40,normed=True,histtype='step',linestyle=('solid','dashed'))
Run Code Online (Sandbox Code Playgroud)

color您可以指定一个参数,就像linestyle完成了一样.绘制线条时,pyplot会查看您提供的每个元组中的第一个项目.所以,如果你想要一条纯黑线和一条黄色虚线,它看起来就像

plt.hist(data1,bins=40,normed=True,histtype='step',linestyle=('solid','dashed'),color=('black','k'))
Run Code Online (Sandbox Code Playgroud)

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