markersize:特征标记大小,可以让图表更加突出。
大家好,我是小F~
条形图在数据可视化里,是一个经常被使用到的图表。
虽然很好用,也还是存在着缺陷呢。比如条形图条目太多时,会显得臃肿,不够直观。
棒棒糖图表则是对条形图的改进,以一种小清新的设计,清晰明了表达了我们的数据。
下面小F就给大家介绍一下,如何使用Python绘制棒棒糖图表。
使用到的是我国1949到2019年,历年的出生人口数据,数据来源国家统计局。
首先读取一下数据。
import?pandas?as?pdimport?matplotlib.pyplot?as?plt#?读取数据df?=?pd.read_csv(‘data.csv’)print(df)
结果如下。
下面将最后一年,即2019年的数据区分出来。
给2019年的条形着色为黑色,其他年份为浅灰色。
并且在图表中添加散点图,可在条形图的顶部绘制圆形。
#?新建画布fig,?ax?=?plt.subplots(1,?figsize=(12,?8))#?年份数n?=?len(df)#?颜色设置colors?=?[‘black’]? ?((n-1)*[‘lightgrey’])plt.bar(df.Year,?df.value,?color=colors)plt.scatter(df.Year,?df.value,?color=colors)plt.show()
得到结果如下。
可以使用参数标记在两端绘制圆,而不是只在顶部生成散点图。
然后可以通过更改y-limit参数来隐藏最底端的圆。
#?新建画布fig,?ax?=?plt.subplots(1,?figsize=(12,?8))#?年份数n?=?len(df)#?颜色设置colors?=?[‘black’]? ?((n-1)*[‘lightgrey’])#?使用线条, markersize设置标记点大小for?idx,?val?in?df.iterrows():????plt.plot([val.Year,?val.Year],?????????????[-20,?val.value],?????????????color=colors[idx],?????????????marker=’o’,?????????????markersize=3)#?设置y轴最低值plt.ylim(0,)plt.show()
结果如下。
黑色不是特别好看,改个颜色看看。
#?新建画布fig,?ax?=?plt.subplots(1,?figsize=(12,?8))#?年份数n?=?len(df)#?颜色设置color?=?’b’colors?=?[‘#E74C3C’]? ?((len(df)-1)*[‘#F5B7B1′])#?使用线条for?idx,?val?in?df.iterrows():????plt.plot([val.Year,?val.Year],?????????????[-20,?val.value],?????????????color=colors[idx],?????????????marker=’o’,?????????????lw=4,?????????????markersize=6,?????????????markerfacecolor=’#E74C3C’)#?移除上边框、右边框ax.spines[‘right’].set_visible(False)ax.spines[‘top’].set_visible(False)#?设置x、y轴范围plt.xlim(1948,?2020)plt.ylim(0,)#?中文显示plt.rcParams[‘font.sans-serif’]?=?[‘Songti?SC’]plt.title(‘中国历年出生人口数据(万)’,?loc=’left’,?fontsize=16)plt.text(2019,?-220,?’来源:国家统计局’,?ha=’right’)#?2019年出生人口数(显示)value_2019?=?df[df[‘Year’]?==?2019].value.values[0]plt.text(2019,?value_2019 80,?value_2019,?ha=’center’)#?保存图片plt.savefig(‘chart.png’)
得到结果如下。
现在对于条形图,你就有了另外一个选择,即棒棒糖图表。
此外我们也能了解到目前中国的新出生人口数量是越来越少,据说2020年出生人口降幅或超一成,未来几年恐跌破1000万…
最后本次使用到的代码文件和数据文件已上传,欢迎大家点赞、收藏!!!
如发现本站有涉嫌抄袭侵权/违法违规等内容,请<举报!一经查实,本站将立刻删除。