Обозначить отдельные точки на участках совместного рассеяния - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь обозначить все точки на каждом из четырех графиков.Мне удалось обозначить все точки только на последнем, как вы можете видеть на рисунке:

enter image description here

Однако я пробовал несколько комбинаций иЯ не могу заставить это работать.Мой текущий сценарий - этот.Любое тело может дать мне руку, пожалуйста?

plt.rcParams['figure.figsize'] = (10, 8)

f, ((ax5, ax6), (ax7, ax8)) = plt.subplots(2, 2)
ax5.scatter(large.total_tax, large.id_inf)
ax5.set_title("Large Firms")

ax6.scatter(medium.total_tax, medium.id_inf)
ax6.set_title("Medium Firms")

ax7.scatter(small.total_tax, small.id_inf)
ax7.set_title("Small Firms")

ax8.scatter(micro.total_tax, micro.id_inf)
ax8.set_title("Micro Firms")

for i, ciiu_4n1 in enumerate(micro.ciiu_4n1):
    ax8 = plt.annotate(ciiu_4n1, [micro.total_tax[i], micro.id_inf[i]])

Ответы [ 2 ]

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

Попробуйте что-то вроде этого и добавьте комментарий ниже, если это работает.Если это не так, я удалю свой ответ

for i, ciiu_4n1 in enumerate(micro.ciiu_4n1):
    ax8.annotate(ciiu_4n1, [micro.total_tax[i], micro.id_inf[i]])

for i, ciiu_4n1 in enumerate(small.ciiu_4n1):
    ax7.annotate(ciiu_4n1, [small.total_tax[i], small.id_inf[i]])

for i, ciiu_4n1 in enumerate(medium.ciiu_4n1):
    ax6.annotate(ciiu_4n1, [medium.total_tax[i], medium.id_inf[i]])

for i, ciiu_4n1 in enumerate(large.ciiu_4n1):
    ax5.annotate(ciiu_4n1, [large.total_tax[i], large.id_inf[i]])
0 голосов
/ 04 октября 2018

Вы можете использовать другой цикл for для петли по осям, и вместо этого использовать ax.annotate, чтобы убедиться, что вы строите график на правильных осях:

for ax in [ax5, ax6, ax7, ax8]:
    for i, ciiu_4n1 in enumerate(micro.ciiu_4n1):
        ax.annotate(ciiu_4n1, [micro.total_tax[i], micro.id_inf[i]])

Если на каждом графике используются разные наборы данных, тогда решениебудет делать ваш начальный цикл для каждой оси, как показано в ответе Базингаа

...