文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Python怎么绘制一个棒棒糖图表

2023-06-15 00:59

关注

本篇文章给大家分享的是有关使用Python怎么绘制一个棒棒糖图表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首先读取一下数据。

import pandas as pdimport matplotlib.pyplot as plt# 读取数据df = pd.read_csv('data.csv')print(df)

结果如下。

使用Python怎么绘制一个棒棒糖图表

数据集很简单,每行都只有一个年份和一个值。

先绘制一个带有每年数值的条形图。

# 绘制柱状图plt.bar(df.Year, df.value)plt.show()

两行代码,即可得到一张条形图图表,看起来确实是有点拥挤。

使用Python怎么绘制一个棒棒糖图表

下面将最后一年,即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()

得到结果如下。

使用Python怎么绘制一个棒棒糖图表

颜色已经修改成功,还需要调整一下条形图的宽度以及顶部圆圈的大小。

# width: 条形图宽度  s: 散点图圆圈大小plt.bar(df.Year, df.value, color=colors, width=0.2)plt.scatter(df.Year, df.value, color=colors, s=10)plt.show()

结果如下。

使用Python怎么绘制一个棒棒糖图表

比起先前的蓝色条形图图表,棒棒糖图表确实是好看了不少。

除了用条形图来绘制棒棒糖图表,还可以使用线条,这样整体的宽度会更加一致。

X将Year(年份)数据作为起点和终点,Y以-20和各年份数据作为起点和终点。

import pandas as pdimport matplotlib.pyplot as plt# 读取数据df = pd.read_csv('data.csv')print(df)# 新建画布fig, ax = plt.subplots(1, figsize=(12, 8))# 年份数n = len(df)# 颜色设置colors = ['black'] + ((n-1)*['lightgrey'])# 使用线条for idx, val in df.iterrows():    plt.plot([val.Year, val.Year],             [-20, val.value],             color=colors[idx])plt.show()

得到结果如下。

使用Python怎么绘制一个棒棒糖图表

可以使用参数标记在两端绘制圆,而不是只在顶部生成散点图。

然后可以通过更改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()

结果如下。

使用Python怎么绘制一个棒棒糖图表

此外还可以调整lw、markersize参数,定义线条的粗细及标记的大小,甚至可以绘制两次线条以创建轮廓效果。

# 新建画布fig, ax = plt.subplots(1, figsize=(12, 8))color = 'b'# 年份数n = len(df)# 颜色设置colors = ['black'] + ((n-1)*['lightgrey'])# 使用线条for idx, val in df.iterrows():    plt.plot([val.Year, val.Year],             [-20, val.value],             color='black',             marker='o',             lw=4,             markersize=6)    plt.plot([val.Year, val.Year],             [-20, val.value],             color=colors[idx],             marker='o',             markersize=4)# 移除上边框、右边框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')

得到结果如下。

使用Python怎么绘制一个棒棒糖图表

黑色不是特别好看,改个颜色看看。

# 新建画布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')

得到结果如下。

使用Python怎么绘制一个棒棒糖图表

python的五大特点是什么

python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如C++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。

以上就是使用Python怎么绘制一个棒棒糖图表,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯