Проблема с matplotlib.pyplot с matplotlib.pyplot.scatter в аргументе s - PullRequest
2 голосов
/ 21 февраля 2020

Меня зовут Луис Франсиско Гомес, и я в курсе Intermediate Python> 1 Matplotlib> Размеры, принадлежащие Data Scientist с Python в DataCamp. Я воспроизводлю упражнения курса, где в этой части вы должны составить точечный график, в котором размеры точек эквивалентны населению стран. Я пытаюсь воспроизвести результаты DataCamp с этим кодом:

# load subpackage
import matplotlib.pyplot as plt

## load other libraries
import pandas as pd
import numpy as np

## import data
gapminder = pd.read_csv("https://assets.datacamp.com/production/repositories/287/datasets/5b1e4356f9fa5b5ce32e9bd2b75c777284819cca/gapminder.csv")
gdp_cap = gapminder["gdp_cap"].tolist()
life_exp = gapminder["life_exp"].tolist()

# create an np array that contains the population
pop = gapminder["population"].tolist()
pop_np = np.array(pop)


plt.scatter(gdp_cap, life_exp, s = pop_np*2)

# Previous customizations
plt.xscale('log') 
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007')
plt.xticks([1000, 10000, 100000],['1k', '10k', '100k'])

# Display the plot
plt.show()

Однако получить это:

enter image description here

Но в теории вам нужно получить это:

enter image description here

Я не понимаю, в чем проблема с аргументом s в plt.scatter .

Ответы [ 3 ]

2 голосов
/ 21 февраля 2020

Вам необходимо масштабировать ваши s,

plt.scatter(gdp_cap, life_exp, s = pop_np*2/1000000)

Размер маркера в пунктах ** 2. По документам

1 голос
/ 21 февраля 2020

Это потому, что ваши размеры слишком велики, уменьшите их. Также нет необходимости создавать все промежуточные массивы:

plt.scatter(gapminder.gdp_cap, 
            gapminder.life_exp, 
            s=gapminder.population/1e6)

Вывод:

enter image description here

0 голосов
/ 21 февраля 2020

Я думаю, вы должны использовать

plt.scatter(gdp_cap, life_exp, s = gdp_cap*2)

или, возможно, уменьшить или масштабировать pop_np

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...