Определите размеры пузырьков в соответствии с столбцом и цвета пузырьков в соответствии с другим столбцом в точечной диаграмме (matplotlib) - PullRequest
0 голосов
/ 14 мая 2018

Я строю простой точечный график, который читает данные из файла xls. Это классический график ожидаемой продолжительности жизни x ВВП на душу населения. Вот код:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#ler a terceira sheet da planilha
data = pd.read_excel('sample.xls', sheet_name=0)
data.head()

plt.scatter(x = data['LifeExpec'],
        y = data['GDPperCapita'],
        s = data['PopX1000'],
        c = data['PopX1000'],
        cmap=cm.viridis,
        edgecolors = 'none',
        alpha = 0.7)

for estado in range(len(data['UF'])):
    plt.text(x = data['LifeExpec'][estado],
         y = data['GDPperCapita'][estado],
         s = data['UF'][estado],
         fontsize = 14)

plt.colorbar()
plt.show()

Файл .xls: enter image description here

Столбец "Население" из файла xls (PopX1000) определяет размеры пузырьков и в настоящее время также определяет их цвета. Я бы хотел, чтобы пузыри меняли размеры в зависимости от населения (как они делают сейчас), но цвета меняются в зависимости от региона, в котором находится штат.

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

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете преобразовать Region в числовое представление и использовать его в качестве «ключа» для вашей цветовой карты. Ниже приведены два способа сделать это (один закомментирован, выбрать тот, который вы выберете, результат должен быть одинаковым):

plt.scatter(x = data['LifeExpec'],
        y = data['GDPperCapita'],
        s = data['PopX1000'],
        c = pd.factorize(data['Region'])[0],
        # Alternatively:
        # c = data['Region'].astype('category').cat.codes
        cmap=cm.viridis,
        edgecolors = 'none',
        alpha = 0.7)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...