Объединить линию и гистограмму в Matplotlib [duplicate]

однолинейная версия решения arulmr

def diff(listA, listB):
    return set(listA) - set(listB) | set(listA) -set(listB)
9
задан moenad 13 November 2013 в 01:01
поделиться

3 ответа

Я тоже хотел знать, однако все существующие ответы не предназначены для отображения штриха и линейного графика на одном и том же сюжете, но на другой оси.

, поэтому я сам искал ответ и нашел пример, который работает - Plot Pandas DataFrame как Bar и Line на одном и том же графике . Я могу подтвердить, что он работает .

Что меня сбило с толку, тот же самый код работает там , но здесь не работает . I.e., я скопировал код OP и могу убедиться, что он не работает как ожидалось .

Единственное, о чем я мог подумать, это добавить индексный столбец в Df[['A','B']] и Df[['C','D']], но я не знаю, как, поскольку столбец индекса не имеет имени для меня, чтобы добавить .

Сегодня я понимаю, что даже я могу заставить его работать, реальная проблема заключается в том, что Df[['A','B']] дает группированную (кластерную) гистограмму, но сгруппированная (кластерная) линейная диаграмма не поддерживается.

2
ответ дан Community 22 August 2018 в 20:00
поделиться

Вы также можете попробовать следующее:

fig = plt.figure()
ax = DF['A','B'].plot(kind="bar");plt.xticks(rotation=0)
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),DF['C','D'],marker='o')
12
ответ дан Michal 22 August 2018 в 20:00
поделиться

Вы можете сделать что-то подобное, как на одном рисунке:

In [4]: Df = pd.DataFrame(data=np.random.randn(10,4), index=pd.DatetimeIndex(start='2005', freq='M', periods=10), columns=['A','B','C','D'])

In [5]: fig, ax = plt.subplots(2, 1) # you can pass sharex=True, sharey=True if you want to share axes.

In [6]: Df[['A','B']].plot(kind='bar', ax=ax[0])
Out[6]: <matplotlib.axes.AxesSubplot at 0x10cf011d0>

In [7]: Df[['C','D']].plot(color=['r', 'c'], ax=ax[1])
Out[7]: <matplotlib.axes.AxesSubplot at 0x10a656ed0>
0
ответ дан moenad 22 August 2018 в 20:00
поделиться
  • 1
    Есть ли способ получить их на одной фигуре? то есть обводной оси x. – user2546580 13 November 2013 в 16:16
  • 2
    @moenad: Это не работает. Строковый график перекрывает график штрихов, и вы больше не видите планку. Кажется, это связано с пандами, потому что если вы делаете ax.plot(Df.index.values, DF[['C', 'D']], ...), это работает. – naught101 9 November 2015 в 00:25
  • 3
    @ naught101, можете ли вы подробно рассказать? Я попробовал ax.plot(Df.index.values, Df[['C', 'D']], linestyle='--', marker='o'), но все еще не работает для меня . – xpt 31 December 2015 в 18:39
Другие вопросы по тегам:

Похожие вопросы: