Диаграмма разброса Matplotlib дает значение ValueError (msg.format (c.shape, x.size, y.size)) при указании цветов - PullRequest
0 голосов
/ 01 июля 2018

Я застрял на задании, где они используют данные из

https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_original.csv

Используя matplotlib мне нужно:

Создайте диаграмму рассеяния с Оплаченной платой за проезд и Возрастом, различайте цвет графика по полу.

Пока у меня проблемы с отображением цвета по полу.

Пока это то, что у меня есть:

 import pandas as pd
import matplotlib.pyplot as plt

titanic = pd.read_csv('https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_original.csv')

plt.scatter(titanic['age'],titanic['fare'],alpha=0.5)
plt.show()

Когда я попробовал это:

plt.scatter(titanic['age'],titanic['fare'], alpha=0.5,c=titanic['sex'])
plt.show()

это дало мне повышение ValueError (msg.format (c.shape, x.size, y.size))

1 Ответ

0 голосов
/ 01 июля 2018

Ты почти у цели. Нельзя передавать строки в c, если они не являются допустимыми цветами. Вы можете либо передать список допустимых цветов, либо передать числовые целочисленные значения путем разложения на столбцы. Например:

plt.scatter(titanic['age'], titanic['fare'], alpha=0.5, c=pd.factorize(titanic['sex'])[0])

Или,

titanic = titanic.dropna(subset=['sex'])

mapping = {'male' : 'blue', 'female' : 'red'}
plt.scatter(titanic['age'], titanic['fare'], alpha=0.5, c=titanic['sex'].map(mapping))

plt.show()

enter image description here

...