您好我有以下数据框:
df = [{'Column1': 1, 'Colunm2': 'A', 'Colunm3': 2},
{'Column1': 2, 'Colunm2': 'A', 'Colunm3': 4},
{'Column1': 3, 'Colunm2': 'A', 'Colunm3': 1},
{'Column1': 1, 'Colunm2': 'B', 'Colunm3': 7},
{'Column1': 2, 'Colunm2': 'B', 'Colunm3': 2},
{'Column1': 3, 'Colunm2': 'B', 'Colunm3': 9}]
如何在Column1
和Colunm3
之间制作X Y图,但是绘制两条不同的线,一条用于值Colunm2 = 'A'
,另一条用于值Colunm2 ='B'
?
答案 0 :(得分:3)
IIUC:
import pandas as pd
df1 = pd.DataFrame(df)
fig,ax = plt.subplots()
for i,g in df1.groupby('Colunm2'):
g.plot('Column1','Colunm3',ax=ax,label=i)
答案 1 :(得分:2)
正如@ScottBoston在评论中指出的那样,sns.pointplot
hue
参数实际上也是一个组合。
import sns.apiponly as sns
sns.pointplot('Column1', 'Colunm3', data=DataFrame(df), hue='Colunm2')
plt.ylabel('Colunm3')
答案 2 :(得分:1)
你可以试试这个:
import matplotlib.pyplot as plt
df = [{'Column1': 1, 'Colunm2': 'A', 'Colunm3': 2},
{'Column1': 2, 'Colunm2': 'A', 'Colunm3': 4},
{'Column1': 3, 'Colunm2': 'A', 'Colunm3': 1},
{'Column1': 1, 'Colunm2': 'B', 'Colunm3': 7},
{'Column1': 2, 'Colunm2': 'B', 'Colunm3': 2},
{'Column1': 3, 'Colunm2': 'B', 'Colunm3': 9}]
first = [(i["Column1"], i['Colunm3']) for i in df if i['Colunm2'] == 'A']
second = [(i["Column1"], i['Colunm3']) for i in df if i['Colunm2'] == 'B']
plt.plot([a for a, b in first], [b for a, b in first])
plt.plot([a for a, b in second], [b for a, b in second])
plt.show()