Попытка построить DataFrame с помощью matplotlib, двойных записей в легенде и без меток осей y - PullRequest
0 голосов
/ 29 января 2019

У меня есть DataFrame с пятью столбцами: Time, Mean, STD, Min и Max.

Я пытаюсь создать график, который показывает три линии, Mean, Min и Max и STD, чтобы показатькак затененная область вокруг Mean.Это работает, но я сталкиваюсь с проблемой, когда y-метка не отображается, а записи легенды дублируются, кроме STD.Кажется, проблема в том, что с plt.plot, когда я закомментирую три plt.plot, результирующий plt.fill имеет y-метку и легенду с одной записью.Вот (https://imgur.com/a/QNVQouk) сюжет.

from numpy import genfromtxt
my_data = genfromtxt('data_all_1.txt', delimiter=',')

import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import numpy as np

plt.close()

data = pd.DataFrame(my_data,columns=['Frame', 'Mean', 'STD', 'Min', 'Max'])


plt.plot(data.loc[:10,'Frame'], data.loc[:10,'Mean'], '#1f78b4','-', label='Mean temperature')
plt.fill_between(data['Frame'], data['Mean'] - data['STD'], data['Mean'] + data['STD'], facecolor='#a6cee3', label='Standard deviation')
plt.plot(data['Frame'], data['Min'],'#b2df8a' ,'-', label='Minimum temperature')
plt.plot(data['Frame'], data['Max'], '#33a02c','-', label='Maximum temperature')
plt.xlabel('Time, minutes')
plt.ylabel('Temperature $^\circ$C')
plt.legend(loc='lower right') 
plt.show()

1 Ответ

0 голосов
/ 29 января 2019

pyplot.plot принимает аргументы как

plot([x], y, [fmt], data=None, **kwargs)

Итак, проблема в вашем [fmnt], который должен быть в этом '[color] [marker] [line]' По умолчанию, если [line], но без [marker], данные будут строкой без маркеров. Вы можете просто удалить '-', чтобы она стала

plt.plot(data.loc[:10,'Frame'], data.loc[:10,'Mean'], '#1f78b4', label='Mean temperature')

Если вам действительно нужно включить стиль линии иcolor (в шестнадцатеричном формате), вам необходимо явно указать их в аргументах как

plt.plot(x, y, color='#1f78b4', linestyle='-', label='...')

В противном случае, цвет шестнадцатеричной строки допускается только в том случае, если цвет - это единственное, что указано в '[color] [marker] [line] 'аргумент

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