стиль линии гистограммы в matplotlib

Мне нужно построить две гистограммы на одном и том же рисунке, и они перекрываются. Я использую команду как

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: -- 

Мой вопрос: как изменить стиль линии (сплошной / пунктирный и цветной)? Или есть альтернативный способ построения этих двух гистограмм с желаемыми стилями линий?

Вы импортировали все необходимые библиотеки? Кроме того, иногда не все linestyles доступны для всех типов сюжетов. Есть линисты, которые работают на участки, которые не работают на векторах (даже если они выглядят так, как должны), например. Когда имя символа не работает «-», рекомендуется попробовать именованную версию «пунктирная».

В аргументе сюжета вы можете указать кортеж liniestles (или цветов, ширины и т. Д.), Как это делается для linewidths linux в этом примере из документов matplotlib (Ctrl + F для ширины линий)

Используя команду plot, она должна выглядеть так:

 plt.hist(data1,bins=40,normed=True,histtype='step',linestyle=('solid','dashed')) 

Существует color аргумент, который вы можете указать так же, как и для linestyle . Когда строки строятся, pyplot смотрит на первый элемент в каждом кортеже, который вы предоставляете. Поэтому, если вам нужна сплошная черная линия и пунктирная желтая линия, это будет выглядеть так:

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

Таким образом, «твердый» должен сочетаться с «черным» и «пунктиром» должен совпадать с «k». Это должно работать для любых других свойств линий, которые вы хотите использовать.