Панда Matplotlib маржа с осью х - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать линейную диаграмму, используя фрейм данных pandas и matplotlib.Я использую следующий код для создания линейного графика.

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'Quarter': ['Q1-2018', 'Q2-2018', 'Q3-2018', 'Q4-2018', 'Q1-2019'],
    'Data': [256339, 265555, 274880, 211128, 0]
}
dataset2 = pd.DataFrame(data=data)
ax3 = dataset2[['Quarter', 'Data']].plot.line(x='Quarter', y='Data', 
legend=False)
ax3.margins(x=0.1)
plt.show()

, который дает следующий результат enter image description here

Как видите, начало и конец строки начинаетсяи заканчивается на краю сюжета.То, чего я пытаюсь достичь, - это иметь место в начале и конце графика, как показано ниже.enter image description here

Я пытался установить x margin с помощью ax3.margins(x=0.1), но это ничего не делает.

Как добавить немного места для начала и концаграфик, чтобы линия не прилипала к краям?

1 Ответ

0 голосов
/ 06 февраля 2019

В пандах 0.23 вы получите правильный график с полями по желанию, но без меток.Эта «ошибка», по-видимому, была исправлена ​​в pandas 0.24 за счет другого нежелательного поведения.

То есть pandas устанавливает границы категориальных графиков и устанавливает метки в позиции, которые выглядят правильными, если они ограниченыне изменены.Хотя теоретически вы можете снять ограничения (ax.set_xlim(None, None)) и разрешить автомасштабирование осей (ax.autoscale()), результатом будет некорректно помеченный график.
Я сомневаюсь, что за этим есть какие-то причины, это скорее недосмотр висточник панд. Эта проблема панд лучше всего описывает проблему, которая затем сводится к этой 5-летней проблеме .

В любом случае для категориальных графиков рассмотрите возможность использования matplotlib напрямую.Эта категориальная функция довольно стабильна и проста в использовании:

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'Quarter': ['Q1-2018', 'Q2-2018', 'Q3-2018', 'Q4-2018', 'Q1-2019'],
    'Data': [1,3,2,4,1]
}
df = pd.DataFrame(data=data)

plt.plot("Quarter", "Data", data=df)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...