Различные размеры маркеров, пропорциональные значениям в столбце для pandas линейных графиков с маркерами - PullRequest
1 голос
/ 13 апреля 2020

У меня есть pandas кадр данных, из которого мне нужно построить линейный график с маркерами. Для этого я преобразую фрейм данных в сводную таблицу, где index= "Distance", columns= "system", values= "fscore". С помощью метода plot, который используется во фрагменте кода ниже, я могу получить линейный график, как показано ниже. Однако, как именно я могу изменить размер маркера на основе значений в столбце lenth (или нормализованной оценки значений в столбце lenth)?

enter image description here

Фрагмент кода:

plotPD = df.pivot(index="Distance", columns="system", values="fscore").fillna(0)
ax = plotPD.plot(
    marker="H",
    title="plotTitle",
    xticks=(range(0, len(plotPD.index) + 2, 2)),
    yticks=np.arange(0, 1.1, 0.1),
)
ax.set_xlabel(plotPD.index.name, fontsize=14)

Исходный кадр данных distPD

    system  Distance  lenth  summ    fscore
0      L2S        12     45    31  0.688889
1      L2S         9     84    52  0.619048
2      L2S         1   1685  1471  0.872997
3      L2S         2    578   403  0.697232
4      L2S        13     47    30  0.638298
279  BiAFF        17      9     8  0.888889
280  BiAFF        19      7     5  0.714286
281  BiAFF        21      5     5  1.000000
282  BiAFF        20      4     4  1.000000
283  BiAFF        26      2     2  1.000000

1 Ответ

2 голосов
/ 14 апреля 2020

Вы можете рассмотреть plot без маркеров и добавить график scatter с опцией size:

plotPD.plot(marker="",..., zorder=1) # or simply remove marker option
plt.scatter(df.Distance, df.fscore, s=df.lenth, zorder=2) # not sure of your x, y
...