我的名字是路易斯·弗朗西斯科·戈麦斯(),我在中间Python >1 Matplotlib >Size课程中学习,这是属于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()然而,得到这一点:

但从理论上讲,你需要做到这一点:

我不明白‘s in plt.scatter的论点有什么问题。
发布于 2020-02-20 22:14:03
发布于 2020-02-20 22:17:11
这是因为你的尺寸太大了,缩小它。此外,不需要创建所有中间数组:
plt.scatter(gapminder.gdp_cap,
gapminder.life_exp,
s=gapminder.population/1e6)输出:

发布于 2020-02-20 22:16:21
我觉得你应该用
plt.scatter(gdp_cap, life_exp, s = gdp_cap*2)或者减少或缩小pop_np的规模
https://stackoverflow.com/questions/60329218
复制相似问题