【发布时间】:2019-09-02 09:59:31
【问题描述】:
我正在尝试在图表上绘制两条线,并且正在努力将我的图例颜色与图表线颜色相匹配。当我尝试为绘图上的线条分配颜色时,它只会改变图例,虽然它也改变了图表的线条颜色,但它们与图例不匹配!
这是我的代码的基础。
import pandas as pd
import matplotlib.pyplot as plt
df_mated = pd.read_csv("file1.txt", sep='\t', header=0)
df_mated['Average'] = df_mated.mean(axis=1)
df_mated['SEM'] = df_mated.loc[:, :'Average'].sem()
mated_E = df_mated['SEM'].tolist()
b = df_mated['Average'].tolist()
plot1, = plt.plot(x, b, 'r-')
plt.errorbar(x, b, xerr=None, yerr=mated_E)
df_unmated = pd.read_csv("file2.txt", sep='\t', header=0)
df_unmated['Average'] = df_unmated.mean(axis=1)
df_unmated['SEM'] = df_unmated.loc[:, :'Average'].sem()
unmated_E = df_unmated['SEM'].tolist()
c = df_unmated['Average'].tolist()
plot2, = plt.plot(x, c, 'b-')
plt.errorbar(x, c, xerr=None, yerr=unmated_E)
plt.xlabel('Position')
plt.ylabel('Average Read Depth')
plt.legend([plot1,plot2],["Mated", "Unmated"])
plt.show()
这是我得到的: Output Graph
如您所见,颜色不匹配,但更重要的是,匹配的红线肯定应该是图表上的顶线。我已经通过打印列表 b 和 c 验证了这一点,所以我确定。
如果我删除“r-”和“b-”,我会得到下图:Output Graph 2
还是不对……
我是 python 和编码的新手,所以如果您需要更多信息,请告诉我。感谢您的帮助!
P.S 您可能会看到我的误差线也仅适用于图形的一半,因为 .sem() 会为我的 pandas 数据框中的某些值生成 NaN。我认为这可能是由于除以 0 错误,因为我的所有数据都是非常小的浮点数 - 但如果您有任何见解,也将不胜感激!
【问题讨论】:
标签: python matplotlib legend