我有一个包含五列的DataFrame:时间,平均值,标准差,最小值和最大值。
我试图创建一个显示三条线的图,均值,最小值和最大值,以及STD以均值周围的阴影区域显示。它可以工作,但是我遇到了一个问题,即除了STD之外,y标签没有显示,图例条目也加倍了。问题似乎出在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()
答案 0 :(得分:1)
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')
如果确实需要同时包含线条样式和颜色(以十六进制表示),则需要在参数中将它们显式指定为
plt.plot(x, y, color='#1f78b4', linestyle='-', label='...')
否则,仅当'[color] [marker] [line]'参数中指定的唯一颜色
时,才允许使用十六进制颜色