第三个变量的标记样式

marker style by third variable

似乎是一个重复问题,但 this post 中的解决方案似乎对我不起作用。

我有一堆数据要绘制为 lines/curves,另一个数据集链接到由 XYZ 数据组成的曲线,其中 Z 代表曲线的标签变量。

我这里有一些示例代码,其中有一些 XY data, and labels 供任何想要复制我正在做的事情的人使用:

plt.plot(xdata, ydata)
plt.scatter(xlab, ylab, c=lab) # needs a marker function adding
plt.show()

理想情况下,我想根据标签值添加某种独特的标记; 0.1、0.5、1、2、3、4、6、8、10、20。每条曲线的标签都相同。

我要绘制 100 多条曲线,因此需要一些快速有效的方法。任何帮助都会很棒!

我目前的解决方案是通过标记值来拆分数据,然后为每个单独绘制(在我看来又长又乱)。认为有人可能在这里有更优雅的解决方案。

我猜你可以用字典来做到这一点......但我可能需要一些帮助!

干杯,KB

Matplotlib 不接受每个图不同的标记。

但是,针对大型数据集的更简洁、更可靠的解决方案是使用 pandasseaborn 库:

此外,您还可以使用 pandas.cut 函数绘制 bin(这是我经常需要生成图表的东西,我可以在其中使用第三个连续值作为参数)。使用方法是:

import pandas as pd
import seaborn as sns
url = 'https://pastebin.com/raw/dwGBLqSb' # url of paste
df = pd.read_csv(url)

sns.scatterplot(data = df, x='labx', y='laby',  style='lab')

并生成以下示例:

如果您有更高级的标签,您还可以查看 LabelEncoder of Sklearn


希望我已经对这个答案进行了足够的编辑,不会冒犯 don't post identical answers to multiple questions。值得一提的是,我不以任何方式隶属于 seaborn 图书馆,也没有试图推广任何东西。我唯一想做的就是帮助遇到类似问题的人,但我无法在 SE 中轻松找到明确的答案。