python - 如何使用 seaborn 为每条线绘制带有特定颜色和线型的特定点上的点的线图?

标签 python python-3.x matplotlib plot seaborn

我有以下数据框

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 生成一个具有不同 colorlinestyles 的线图。但我想为每个 cat 提供特定的 colorlinestyles,因为它们在 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()

enter image description here

关于python - 如何使用 seaborn 为每条线绘制带有特定颜色和线型的特定点上的点的线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58486053/

相关文章:

python - 在 matplotlib 中提供旋转散点图的更快方法?

python - 获取<生成器对象<genexpr>

python - PyCharm 导入方式与系统命令提示符 (Windows) 有何不同

python - 如何在python中获取特定范围内的空闲端口

python - Matplotlib Artist 中的 clip_box 是什么意思?

python - 只有 size-1 数组可以转换为 Python 标量

python - 如何将一个有序列表中的每个对象插入到另一个嵌套列表中?

python - 美元金额,千位以逗号分隔

python - {% extends "base.html"%} 和 {% block content %} inside if statement (Django app)

python - 无需安装即可使用 nltk