Изменить ширину строки указанной c строки в линейном графике pandas / matplotlib - PullRequest
2 голосов
/ 19 июня 2020

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

Date    2011    2012    2013    2014    2015    2016    2017    2018    2019    2020
Date                                        
01 Jan  12.896  13.353  12.959  13.011  13.073  12.721  12.643  12.484  12.876  13.102
02 Jan  12.915  13.421  12.961  13.103  13.125  12.806  12.644  12.600  12.956  13.075
03 Jan  12.926  13.379  13.012  13.116  13.112  12.790  12.713  12.634  12.959  13.176
04 Jan  13.051  13.414  13.045  13.219  13.051  12.829  12.954  12.724  13.047  13.187
05 Jan  13.176  13.417  13.065  13.148  13.115  12.874  12.956  12.834  13.098  13.123

Код для построения здесь.

ice_data_dates.plot(figsize=(20,12), title='Arctic Sea Ice Extent', lw=3, fontsize=16, ax=ax, grid=True)

Это строит линейный график для каждого из лет, перечисленных в фрейм данных за каждый день в году. Однако я хотел бы сделать линию на 2020 год намного толще, чем другие, чтобы она выделялась более четко. Есть ли способ сделать это с помощью этой единственной строчки кода? Или мне нужно вручную построить график всех лет, чтобы я мог контролировать толщину каждой линии отдельно? Прилагается текущее изображение, на котором все толщины линий одинаковы.

enter image description here

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Вы можете перебирать строки на графике, которые можно получить с помощью ax.get_lines, и увеличивать ширину с помощью set_linewidth, если его label соответствует интересующему значению:

fig, ax = plt.subplots()
df.plot(figsize=(20,12), title='Arctic Sea Ice Extent', 
        lw=3, fontsize=16, ax=ax, grid=True)

for line in ax.get_lines():
    if line.get_label() == '2020':
        line.set_linewidth(15)
plt.show()

enter image description here

0 голосов
/ 19 июня 2020

Вы можете сделать это в двух строках, например:

ice_data_dates.loc[:, ice_data_dates.columns != "2020"].plot(figsize=(20, 12), title='Arctic Sea Ice Extent', lw=3, fontsize=16, ax=ax, grid=True)
ice_data_dates["2020"].plot(figsize=(20, 12), title='Arctic Sea Ice Extent', lw=15, fontsize=16, ax=ax, grid=True)

Это сначала построит весь DataFrame, кроме столбца для 2020, а затем только 2020. Результат выглядит следующим образом: wider_line

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

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