【问题标题】:Matplotlib legend helpMatplotlib 图例帮助
【发布时间】:2011-03-19 04:06:36
【问题描述】:

我正在编写一个情节的几个点的脚本。我也在尝试从这些观点创造一个传奇。总结一下我的脚本,我正在绘制几种“类型”的点(称它们为“a”、“b”、“c”)。这些点有不同的颜色和形状:'a'-'go' 'b'-'rh' 'c'-'k^'。

这是我脚本相关部分的缩短版:

lbl = #the type of point x,y is (a,b,c)
for x,y in coords:
   if lbl in LABELS:
      plot(x, y, color)
   else:
      LABELS.add(lbl)
      plot(x, y, color, label=lbl)
 legend()

我在这里所做的只是绘制一堆点并为它们分配一个标签。但是,我发现如果我为每个点添加标签,那么图例将包含每个点的条目。我只想要每种类型的点(a,b,c)一个条目。所以,我把我的脚本改成了上面的样子。有一个更好的方法吗?如果我有一百万个不同类型的点,那么数据结构 LABELS(一组)会占用大量空间。

【问题讨论】:

    标签: python matplotlib legend


    【解决方案1】:

    根据点的类型对xy 进行分组。 一次调用plot,绘制所有相同类型的点:

    import pylab
    import numpy as np
    
    lbl=np.array(('a','b','c','c','b','a','b','c','a','c'))
    x=np.random.random(10)
    y=np.random.random(10)
    for t,color in zip(('a','b','c'),('go','rh','k^')):
        pylab.plot(x[lbl==t],y[lbl==t],color,label=t)
    pylab.legend()
    pylab.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2023-01-19
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多