Я пытаюсь построить три линии на одном и том же участке в Matplotlib. Это InvoicesThisYear, DisputesThisYear и PercentThisYear (которые являются спорами/счетами)Линии, которые не отображаются на графике Matplotlib
Исходный ввод - это два столбца дат - один для даты зарегистрированного спора и один для даты зарегистрированного счета-фактуры.
Я использую даты для подсчета количества споров и счетов-фактур в месяц в течение определенного года.
Затем я пытаюсь его нарисовать, но он появляется пустым. Я начал с того, что просто пытался распечатать PercentThisYear и InvoicesThisYear.
PercentThisYear = (DisputesFYThisYear/InvoicesFYThisYear).fillna(0.0)
#Percent_ThisYear.plot(kind = 'line')
#InvoicesFYThisYear.plot(kind = 'line')
plt.plot(PercentThisYear)
plt.xlabel('Date')
plt.ylabel('Percent')
plt.title('Customer Disputes')
# Remove the plot frame lines. They are unnecessary chartjunk.
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_visible(False)
ax2 = ax.twinx()
ax2.plot(InvoicesFYThisYear)
# Ensure that the axis ticks only show up on the bottom and left of the plot.
# Ticks on the right and top of the plot are generally unnecessary chartjunk.
ax.get_xaxis().tick_bottom()
#ax.get_yaxis().tick_left()
# Limit the range of the plot to only where the data is.
# Avoid unnecessary whitespace.
datenow = datetime.datetime.now()
dstart = datetime.datetime(2015,4,1)
print datenow
#plt.ylim(0, .14)
plt.xlim(dstart, datenow)
firsts=[]
for i in range(dstart.month, datenow.month+1):
firsts.append(datetime.datetime(2015,i,1))
plt.xticks(firsts)
plt.show()
Это результат ... Дата все испорчена, и ничего не печатает. Но масштабированные по осям выглядят правильно. Что я делаю не так?
Здесь созданы ведущие к графику, если это полезно
Входной выглядит следующим образом:
InvoicesThisYear
Out[82]:
7 7529
5 5511
6 4934
8 3552
dtype: int64
DisputesThisYear
Out[83]:
2 211
1 98
7 54
4 43
3 32
6 29
5 21
8 8
dtype: int64
PercentThisYear
Out[84]:
1 0.000000
2 0.000000
3 0.000000
4 0.000000
5 0.003810
6 0.005877
7 0.007172
8 0.002252
dtype: float64
Спасибо за ваш ответ. Вы знаете какой-либо способ построения сериала, так как левая колонка связана с подсчетом справа? Или, может быть, нарезка сериала на списки? – jenryb
@jenryb, я отредактировал свой ответ, чтобы вместо этого использовать серию. –
Существует открытый PR, который добавляет возможность извлекать индекс из переданного объекта 'Series'. – tacaswell