我有以下数据框
import pandas as pd
data_tmp = pd.DataFrame({'x': [0,14,28,42,56, 0,14,28,42,56],
'y': [0, 0.003, 0.006, 0.008, 0.001, 0*2, 0.003*2, 0.006*2, 0.008*2, 0.001*2],
'cat': ['A','A','A','A','A','B','B','B','B','B'],
'color': ['#B5D8F0','#B5D8F0','#B5D8F0','#B5D8F0','#B5D8F0','#247AB2','#247AB2','#247AB2','#247AB2','#247AB2'],
'point': [14,14,14,14,14,28,28,28,28,28],
'linestyles':['-','-','-','-','-','--','--','--','--','--']})
我想为每个 cat
生成一个具有不同 color
和 linestyles
的线图。但我想为每个 cat
提供特定的 color
和 linestyles
,因为它们在 dataframe
中定义。最后,我想用相同的颜色标记每行上的 point
。
我只试过:
sns.lineplot(x="x", y="y", hue="cat", data=data_tmp)
sns.scatterplot(x="point",y="y",hue="cat", data=data_tmp[data_tmp.point==data_tmp.x])
plt.show()
有什么想法吗?
最佳答案
也许你想直接使用matplotlib,比如
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'x': [0,14,28,42,56, 0,14,28,42,56],
'y': [0, 0.003, 0.006, 0.008, 0.001, 0*2, 0.003*2, 0.006*2, 0.008*2, 0.001*2],
'cat': ['A','A','A','A','A','B','B','B','B','B'],})
d = {"A" : {"color": '#B5D8F0', "markersize": 5, "linestyle": "-"},
"B" : {"color": '#247AB2', "markersize": 10, "linestyle": "--"}}
for n, grp in df.groupby("cat"):
plt.plot(grp.x, grp.y, marker="o", label=n, **d[n])
plt.legend()
plt.show()
关于python - 如何使用 seaborn 为每条线绘制带有特定颜色和线型的特定点上的点的线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58486053/