【问题标题】:marker style by third variable第三个变量的标记样式
【发布时间】:2018-12-08 19:16:43
【问题描述】:

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

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

我这里有一些示例代码,其中包含一些 XY 数据,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

【问题讨论】:

    标签: python matplotlib markers


    【解决方案1】:

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

    但是,对于大型数据集,一个不那么冗长且更健壮的解决方案是使用 pandasseaborn 库:

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

    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 中轻松找到明确的答案。

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2014-06-11
      相关资源
      最近更新 更多