首页 > 解决方案 > 绘图图例显示未知项目/相同的图例项目以不同的线条显示两次

问题描述

我正在黑白 png 上绘制一些路线。现在看来,图例中有一个不应该存在的项目。我正在迭代一个熊猫数据框,并通过唯一的 ID 识别不同的路线。我在数据框的开头也有一个起点和一个终点,所以在i=0和处i=1,我改为绘制marker='o',所以我可以在我的数据框中的绘图/行上看到单个点。到目前为止一切正常,但正如您在 的图例中看到的那样i=0,有 2 个条目。一旦starting point, 但在第二行中,它会添加一条橙色线。这个怎么可能?在数据框中,它肯定只有 1 行,带有id=0.

这是我的带有示例数据框的代码:

import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df = pd.DataFrame({'x':[100,60,1,1,1,5,4,4], 'y':[100,125,1,2,3,10,10,9],'id':[0,1,2,2,2,3,3,3]})
for i, g in df.groupby('id'):     
    if(i==0):
        g.plot(x='x',y='y',ax=ax,marker='o',title="Alternative Routes",label="Start Punkt")
    if(i==1):
        g.plot(x='x',y='y',ax=ax,marker='o',title="Alternative Routes",label="End Punkt")
    else:
        g.plot(x='x',y='y',ax=ax, title="Alternative Routes",label=i)
plt.show()

这里产生的情节: 在此处输入图像描述

标签: pythonpandasmatplotlibplotlegend

解决方案


自己找到了答案:应该是一个elif而不是一个iffori==1

import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df = pd.DataFrame({'x':[100,60,1,1,1,5,4,4], 'y':[100,125,1,2,3,10,10,9],'id':[0,1,2,2,2,3,3,3]})
for i, g in df.groupby('id'):     
    if(i==0):
        g.plot(x='x',y='y',ax=ax,marker='o',title="Alternative Routes",label="Start Punkt")
    elif(i==1):
        g.plot(x='x',y='y',ax=ax,marker='o',title="Alternative Routes",label="End Punkt")
    else:
        g.plot(x='x',y='y',ax=ax, title="Alternative Routes",label=i)
plt.show()

推荐阅读