Построение горизонтальной линии с использованием субплотов Matplotlib - PullRequest
0 голосов
/ 19 мая 2018

Я посмотрел на следующую ветку, и она помогла, но мне было интересно, пытался ли кто-нибудь попытаться сделать это немного по-другому.

Построение горизонтальной линии на нескольких вспомогательных участках в python с использованием pyplot

Ниже показано, как выглядят данные, поэтому вы можете проверить (при необходимости) = ctr_df

Фрагмент данных можно найти ниже:

Date        LAL_3%      Core        Page_1      Homepage
4/06/2017   0.288142    0.947993    1.174094    0.26622
11/06/2017  0.270052    0.919648    0.615855    0.206031
18/06/2017  0.260225    0.941274    0.550324    0.230775
25/06/2017  0.345208    0.867322    0.373997    0.205385
2/07/2017   0.318578    1.687208    0.420367    0.235314
9/07/2017   0.45653     1.227451    0.71128     0.455536
16/07/2017  0.543492    1.086996    0.415289    0.44763
23/07/2017  0.503581    1.010364    0.642291    0.317182
30/07/2017  0.373479    0.918334    0.580428    0.282783

Мой код указан ниже:

ctr_df.plot(kind='bar', sharey=False, sharex=True, subplots=True, 
                                    legend=True, width=0.8, layout=(2,2), fontsize=12, grid=True, figsize=(20,12), colormap='Dark2')

plt.axhline(0.3, color='k', linestyle='--')
plt.tight_layout()
plt.show()

Это возвращает именно то, что я хочу (отдельные сюжеты по аудитории, по неделям), однако, акслайн появляется только в last сюжет, не все из них.

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

Спасибо

1 Ответ

0 голосов
/ 19 мая 2018

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

from matplotlib import pyplot as plt
import pandas as pd

ctr_df = pd.read_csv("test.csv", delim_whitespace = True,index_col = "Date")
#plot and retrieve axes
axes = ctr_df.plot(kind='bar', sharey=False, sharex=True, subplots=True, 
                                    legend=True, width=0.8, layout=(3,2), fontsize=12, grid=True, figsize=(20,12), colormap='Dark2')
#plot horizontal line in each subplot 
for ax in axes.flatten():
    ax.axhline(0.3, color='k', linestyle='--')
plt.tight_layout()
plt.show()

Вывод:

enter image description here

...