двойная гистограмма matplotlib с пандами - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть следующее:

indyes = tuple(yesSeries.index)
indno = tuple(nodSeries.index)
width = 3

p1 = plt.bar(indyes, yesSeries, label="Example one", color='SkyBlue')
p2 = plt.bar(indno, nodSeries, label="Example two", color='IndianRed')
plt.legend()
plt.xlabel('bar number')
plt.ylabel('bar height')

plt.title('Epic Graph\nAnother Line! Whoa')

plt.show()

Он отображает мой график в виде столбчатой ​​диаграммы: enter image description here

Когда я пытаюсь добавить + width ко второй гистограмме, indno + width, чтобы они не складывались, скорее рядом, я получаю следующую ошибку: TypeError: can only concatenate tuple (not "int") to tuple.

Я установил серию своих панд в кортеж для извлечения даты и подсчета информации.

Как получить график с двумя горизонтальными гистограммами?

1 Ответ

0 голосов
/ 09 ноября 2018

Я считаю, что то, что вы ищете, можно сделать, создав DataFrame из вашего Series и затем используя функцию plot.bar.

В приведенном ниже коде я генерирую данные и создаю график по вашему желанию.

import matplotlib.pyplot as plt
import pandas as pd
times = pd.date_range('2018-09-01', periods=7, freq='5D')
yesSeries = pd.Series([1800,2000,3000,1000,2000,1500,1700], index=times)
nodSeries = pd.Series([200,500,700,600,300,50,0], index=times)

df = pd.DataFrame({"Example one":yesSeries,"Example two":nodSeries})
ax = df.plot.bar(color=["SkyBlue","IndianRed"], rot=0, title="Epic Graph\nAnother Line! Whoa")
ax.set_xlabel("date")
ax.set_ylabel("counts")
ax.xaxis.set_major_formatter(plt.FixedFormatter(times.strftime("%b %d %Y")))
plt.show()

Это приводит к графику ниже.

Bar plot

Если вам кажется, что даты загромождены, вы можете вставить строку ниже перед plt.show() кодом:

plt.gcf().autofmt_xdate()

Что приведет к приведенному ниже графику.

Bar plot with dates with autofmt

...