Python 使用每个关键点的不同值和每个关键点的不同颜色进行打印

Python 使用每个关键点的不同值和每个关键点的不同颜色进行打印,python,matplotlib,Python,Matplotlib,我有一个包含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():

我有一个包含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()
我得到了一个有三条不同颜色的线的图,但是 不知道如何为每行指定颜色和标签。

尝试以下方法: 调用
plt.legend
将为每个键提供
标签

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.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()


添加您的行可以正确地显示图例,但图形中的三行中只有一行编辑了代码。我不确定你得到的是什么值和你的dict的结构。使用
plt.legend
你只需稍加调整就可以得到你的输出。我有与你相同的代码。(列表是一个字典列表,每个键有多个值)。我得到的是三个带有三行的图形,但在每个图形中,图例只有一个键名出现三次,每种颜色都相同。您正在使用
k
作为打印标签,但在创建打印时,您使用变量
v
dd.values()
上进行嵌套循环迭代。我认为你的标签应该是
label='chiave'+str(v)
(或者别的什么,但绝对不是
k
,没有数据很难判断。但是
k
在你的
循环中对于dd.values()中的v是常量)实际上,K是一个循环3个键的变量,对于每个键v,是绘制在y轴上的值,而x轴表示文本的长度。这就是为什么存在嵌套循环。