【发布时间】:2021-01-03 13:32:45
【问题描述】:
import pandas as pd
import matplotlib.pyplot as plt
from random import random
DF = {"A":[(random(),random()),(random(),random())],
"B":[(random(),random()),(random(),random())],
"C":[(random(),random()),(random(),random())],
"D":[(random(),random()),(random(),random())]}
DF = pd.DataFrame(DF, index=["k=1","k=2"])
我的数据框的每一行都包含一个重复实验的观察结果,每一列代表一组受试者。条目是男性基准和女性基准的元组。所以我想绘制针对群体的观察结果,通过标记形状和颜色来区分性别。我尝试了以下方法,但它产生了太长的传说。 如何只显示两个标签(男、女)?
plt.figure()
for row in DF.index:
plt.plot(DF.columns, [a for a,b in DF.loc[row,]], 'b.', label="Male")
plt.plot(DF.columns, [b for a,b in DF.loc[row,]], 'g+', label="Female")
plt.legend(loc="upper right")
plt.show()
顺便说一句,由于值相当接近,我可以在每个点的 x 坐标上添加一点随机噪声(如 R 中的抖动),以便它们更容易辨别吗? p>
【问题讨论】:
-
您的代码似乎没有运行。
-
@QuangHoang 对不起。我相信现在可以了。
标签: python matplotlib label legend