【问题标题】:plotting with different values per key and different color per key每个键使用不同的值和每个键的不同颜色进行绘图
【发布时间】:2019-11-28 04:15:44
【问题描述】:

我有一个包含 3 个字典的列表,每个字典都有多个值。 我想创建一个图表,其中每个键都是由其值形成的不同颜色的线(比如 r、g、b)。我还想要每一行的图例。

这是我开始使用的代码:

plt.figure(figsize=(14,8)) 
plt.title('Grafico ripetizioni per linea')
plt.xlabel('numero caratteri')
plt.ylabel('ripetizioni per linea')
for k in dd.keys():
    plt.locator_params(axis='y', nbins=15)
    for v in dd.values():        
        plt.locator_params(axis='x', nbins=30)
        xs = range(0, len(v))
        ys = v
        plt.plot(xs, ys, label='chiave' + str(k))
plt.minorticks_on()
plt.margins(x=0)
plt.show()

我得到了一个带有不同颜色的三条线的图,但是 不知道如何为每一行指定颜色和标签。

【问题讨论】:

  • 您正在使用k 作为绘图标签,但是在创建绘图时,您使用变量vdd.values() 的嵌套循环中进行迭代。我认为您的标签应该是label='chiave'+str(v)(或其他名称,但绝对不是k,没有数据很难判断。但k 在您的for v in dd.values() 循环中是不变的)
  • 实际上 K 是一个循环 3 个键的变量,每个键的 v 是绘制在 y 轴上的值,而 x 轴表示文本的长度。这就是为什么有一个嵌套循环。

标签: python matplotlib


【解决方案1】:

试试这个: 调用 plt.legend 将为您提供每个键的 label

plt.figure(figsize=(14,8)) 
plt.title('Grafico ripetizioni per linea')
plt.xlabel('numero caratteri')
plt.ylabel('ripetizioni per linea')
for k in dd.keys():
    plt.locator_params(axis='y', nbins=15)
    for v in dd.values():        
        plt.locator_params(axis='x', nbins=30)
        xs = range(0, len(v))
        ys = v
        plt.plot(xs, ys, label='chiave_{}'.format(k))
    plt.minorticks_on()
    plt.legend()
    plt.margins(x=0)
    plt.show()

【讨论】:

  • 添加你的线给我正确的图例,但只有图中三行之一
  • 我已经编辑了代码。我不确定你得到什么价值和你的字典结构。使用plt.legend,您只需稍作调整即可获得输出。
  • 我的代码和你一样。 (该列表是一个字典列表,每个键都有多个值)。我得到的是 3 个带有三行的图形,但在每个图形中,图例只有一个键名出现 3 次,每种颜色都相同。
【解决方案2】:

我认为这是一个可能的解决方案:

plt.figure(figsize=(14,8)) 
plt.title('Grafico ripetizioni per linea')
plt.xlabel('numero caratteri')
plt.ylabel('ripetizioni per linea')
plt.minorticks_on()
plt.margins(x=0)
plt.locator_params(axis='y', nbins=15)    
plt.locator_params(axis='x', nbins=30)

for k,v in dd.items():
        xs = range(0, len(v))
        ys = v
        plt.plot(xs, ys, label=f'chiave_{k}') 
plt.legend()
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多