matplotlib.pyplot scatter函数s参数为数组时的含义解析
关于matplotlib plt.scatter()中s参数为数组时的作用说明
是的,当你给plt.scatter()的s参数传入数组时,数组里的每个元素会一一对应散点图中每个数据点的大小。
结合你提供的代码来看:
你将人口数据转换为numpy数组np_pop并放大2倍后传入s,这样gdp_cap和life_exp中的每一组(对应一个国家的人均GDP和预期寿命)数据点,都会使用np_pop中对应的元素值作为自身的大小——简单说就是人口越多的国家,散点显示得越大,正好契合你做的"世界发展"主题可视化。
补充几个关键细节:
- 传入的数组长度必须和
x(gdp_cap)、y(life_exp)的长度完全一致,否则会触发维度不匹配的错误 s参数的数值对应的是散点的面积(不是半径),如果希望散点大小和数据成线性视觉比例,有时候会对数据开平方(比如np.sqrt(np_pop)),你代码里用np_pop *=2只是为了让所有点的尺寸放大,方便观察
你的代码示例:
# Import numpy as np import numpy as np # Store pop as a numpy array: np_pop np_pop = np.array(pop) # Double np_pop np_pop*=2 # Update: set s argument to np_pop plt.scatter(gdp_cap, life_exp, s = np_pop) # 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()
内容的提问来源于stack exchange,提问作者JouJour
相关产品推荐
相关产品推荐

