#python #dataframe #colors #scatter-plot
#python #фрейм данных #Цвет #точечная диаграмма
Вопрос:
Используя фрейм данных bones1, создайте точечный график зависимости spnbmd от возраста. Мужские и женские точки должны иметь разные цвета или символы.
До сих пор я создавал фрейм данных bone1:
idnum age gender spnbmd obs_num
0 1 11.70 male 0.018081 1
3 2 13.25 male 0.010264 1
6 3 11.40 male -0.029641 1
9 4 10.55 female 0.108043 1
12 5 12.75 female 0.096414 1
.. ... ... ... ... ...
480 380 11.60 male 0.116368 1
481 381 9.80 female 0.097902 1
482 382 11.90 male 0.028986 1
483 383 11.20 male -0.064103 1
484 384 9.80 female 0.049908 1
Я понимаю, как добавить точечный график: bone1.plot.scatter(x = ‘возраст’, y = spnbmd’)
Мне нужна помощь в добавлении цветов
Ответ №1:
Вы можете ввести параметр ‘c’ в свою bone1.plot.scatter()
функцию.
Что-то вроде bone1.plot.scatter(x, y, c=['green','yellow'])
Параметр ‘c’ может быть одной строкой, последовательностью цветовых строк, как показано выше, или именем столбца или позицией, значения которых будут использоваться для окрашивания точек маркера в соответствии с цветовой картой.
Пример-
ax2 = df.plot.scatter(x='length',
y='width',
c='species',
colormap='viridis')
Вы можете найти более подробную информацию в их документации
Ответ №2:
Лучшим способом было бы использовать seaborn, используя аргумент hue в качестве пола.
import seaborn as sns
sns.scatterplot(data=bone1, x='age', y='spnbmd', hue='gender')
В качестве альтернативы, если вы не хотите использовать seaborn и просто используете построение фрейма данных, затем постройте два отдельно, создав два новых фрейма данных для мужской и женской строк соответственно, и добавьте аргумент маркера (вы можете выбрать один из возможных маркеров здесь: https://matplotlib.org/api/markers_api.html )
male_bone1 = bone1.loc[bone1['gender'] == 'Male'] #Selects male rows
female_bone1 = bone1.loc[bone1['gender'] == 'Female'] #Selects female
male_bone1.plot.scatter(x = 'age', y = 'spnbmd', marker = 'x')
female_bone1.plot.scatter(x = 'age', y = 'spnbmd', marker = 'o')