Легенда сюжета показывает неизвестный предмет / тот же элемент легенды, показанный дважды с линией в другом стиле - PullRequest
0 голосов
/ 27 октября 2018

Я строю некоторые маршруты на черно-белом PNG. Теперь кажется, что в легенде есть предмет, которого там быть не должно. Я перебираю фрейм данных панд и идентифицирую различные маршруты по уникальному идентификатору У меня также есть начальная и конечная точки, которые у меня есть в самом начале кадра данных, поэтому в 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()

Вот результирующий сюжет: enter image description here

1 Ответ

0 голосов
/ 27 октября 2018

Нашел ответ сам: должно быть elif вместо if для i==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()
...