如何使用Python绘制常用的统计图表?

医学统计数据分析中,我们经常会用到一些统计图表,例如:直方图、散点图、折线图、箱型图、饼图、条形图等。

Python有很多可视化库可以用于各类统计图的绘制,比如常用的matplotlib、seaborn、plotly、bokeh等。

今天我们简单介绍一些基本的统计图及其Python实现方法:

我们打开Python、Pycharm,在目录新建一个py文件,命名为“Plot”。

绘制直方图:

直方图是用于表示连续变量分布情况的一种统计图形。通常将连续变量按照一定的间隔分成若干个区间,然后统计每个区间内的样本数量,最后绘制成一个条形图,条形的高度表示该区间内的样本数量。在Python中,可以使用matplotlib库的hist()函数来绘制直方图,也可h以使用seaborn库的distplot()函数来绘制带有密度曲线的直方图。

import matplotlib.pyplot as plt import numpy as np\# 生成一些随机数据 data = np.random.randn(1000)\# 绘制直方图 plt.hist(data, bins\=20, color\='blue', alpha\=0.5)  
 plt.title('Histogram of Random Data')  
 plt.xlabel('Value')  
 plt.ylabel('Frequency')  
 plt.show()

在上面的代码中,我们首先生成了 1000 个随机数作为数据,然后使用 hist() 函数绘制直方图。bins 参数指定将数据划分为的区间数,color 参数设置矩形的颜色,alpha 参数设置矩形的透明度。最后,我们添加了标题和坐标轴标签,并使用 show() 函数显示图表。

我们可以通过点击图片输出中的编辑选项,对图表进行调整,点击保存图片。

我们还可以使用 distplot() 函数绘制直方图和概率密度函数曲线。kde 参数设置是否绘制拟合的概率密度函数曲线。其他参数的含义和 hist() 函数类似。最后,我们添加了标题和坐标轴标签,并使用 show() 函数显示图表。

import matplotlib.pyplot as plt import seaborn as sns import numpy as np\# 生成一些随机数据 data = np.random.randn(1000)\# 绘制直方图和概率密度函数曲线 sns.distplot(data, bins\=20, kde\=True, color\='green')  
 plt.title('Histogram with Density Plot')  
 plt.xlabel('Value')  
 plt.ylabel('Frequency')  
 plt.show()

散点图(scatter plot)是一种常见的二维数据可视化方法,用于表示两个变量之间的关系。散点图中每个点的横坐标和纵坐标分别表示两个变量的值,点的位置越靠近一条直线,说明两个变量之间的关系越密切。

在 Python 中,使用 Matplotlib 库的 scatter 函数可以绘制散点图。

import matplotlib.pyplot as plt import numpy as np\# 生成随机数据 x = np.random.rand(50)  
 y = np.random.rand(50)\# 绘制散点图 plt.scatter(x, y)  
 plt.show()

这段代码生成了一个包含 50 个随机点的散点图。可以通过调整 x 和 y 数组的值来改变散点图的分布情况。

折线图常用于展示数据随时间或其他连续性变量的趋势。绘制折线图需要使用Matplotlib库中的plot()函数。

import matplotlib.pyplot as plt  
 x=\[1, 2, 3, 4, 5,6,7,8,9,10,11,12\]  
 y = \[3, 6, 8, 20, 25,35,40,26,21,10,6,2,\]  
 plt.xlabel('Time')  
 plt.ylabel('Data')  
 plt.title('Data Trends Over Time')  
 plt.plot(x, y)  
 plt.show()

这段代码将生成一个简单的折线图,其中x轴表示时间或其他连续性变量,y轴表示数据。在这个示例中,我们创建了两个列表x和y,分别表示时间和对应的数据,然后将它们传递给plot()函数。最后,我们使用show()函数显示图形。

箱型图(Box Plot)是一种用于显示数据分布情况的图形。第一四分位数和第三四分位数之间的区域被称为箱子(IQR),箱子内的线代表中位数。绘制箱型图可以使用Python中的Matplotlib库或Seaborn库,常用的函数是plt.boxplot()和sns.boxplot()。

import numpy as np import matplotlib.pyplot as plt\# 生成100个随机数 data = np.random.normal(size\=100)\# 绘制箱型图 plt.boxplot(data)\# 添加标题和标签 plt.title('Box plot of random data')  
 plt.xlabel('Data')  
 plt.ylabel('Value')\# 显示图形 plt.show()

这段代码生成100个随机数,然后使用plt.boxplot()函数绘制箱型图。最后使用plt.title()、plt.xlabel()和plt.ylabel()函数添加标题和标签,并使用plt.show()函数显示图形。

饼图(Pie chart)是一种用于展示数据占比的图形。饼图的原理是把一个圆形分成若干份,每一份的大小与数据中的相应部分的比例成正比。饼图通常用于展示相对比例较小的数据。

在Python中,使用matplotlib库可以很方便地绘制饼图。

import matplotlib.pyplot as plt\# 数据 labels = \['A', 'B', 'C', 'D'\]  
 sizes = \[25, 45, 20, 10\]\# 绘图 plt.pie(sizes, labels\=labels)\# 显示 plt.show()  

条形图(Bar Plot)是一种用于展示类别型变量之间差异的图形,通常用于展示离散变量的频数或频率。在Python中,可以使用多个库绘制条形图,比如matplotlib、seaborn和plotly等。

import matplotlib.pyplot as plt import numpy as np\# 需要绘制的数据 x = \['A', 'B', 'C', 'D', 'E','F','G'\]  
 y = \[2, 8, 16, 14, 12,7,3\]  
 fig, ax = plt.subplots()\# 设置图形属性 ax.set\_title('Bar Plot Example')  
 ax.set\_xlabel('X Label')  
 ax.set\_ylabel('Y Label')  
 ax.bar(x, y)\# 显示图形 plt.show()

以上代码将绘制一个简单的条形图,如果需要更改图形属性或增加其他元素,可以使用matplotlib库提供的其他方法和函数进行调整。

分组柱形图的实现:

主要使用```````plt.figure()来创建画布,使用``````ax.bar()`````绘制柱形图,````ax.grid()、```ax.spines()、ax.legend()来`设置样式。最后使用**plt.show()**产出分组柱形图。` `````````````````````````

堆积柱形图的实现:

主要使用```````plt.figure()来创建画布,使用``````ax.bar()`````绘制柱形图,````ax.grid()、```ax.spines()、ax.legend()来`设置样式。最后使用**plt.show()**产出堆积柱形图。` `````````````````````````

import matplotlib.pyplot as plt import numpy as np  
 np.random.seed(20230922)\# 1. 生成数据 x = np.arange(10)  
 y1 = np.random.randint(0, 60, 10)  
 y2 = np.random.randint(0, 100, 10)  
 y3 = np.random.randint(0, 40, 10)  
 fig = plt.figure(figsize\=(6, 4), dpi\=100) \# 2. 创建画布 ax = fig.add\_subplot(111)  
 ax.bar(x , y1, width\=0.6, color\='C0', label\='A') \# 3. 绘制柱形图 ax.bar(x, y2, width\=0.6, bottom\=y1, color\='C2', label\='B')  
 ax.bar(x , y3, width\=0.6, bottom\=y1 + y2, color\='C3', label\='C')  
 plt.show()

`与分组柱形图的主要不同的是在ax.bar()柱形图的逻辑以及设置样式的调整中。`

增加格式调整部分语句代码部分:

import matplotlib.pyplot as plt import numpy as np  
 np.random.seed(20230922)\# 1. 生成数据 x = np.arange(10)  
 y1 = np.random.randint(0, 60, 10)  
 y2 = np.random.randint(0, 100, 10)  
 y3 = np.random.randint(0, 40, 10)  
 fig = plt.figure(figsize\=(6, 4), dpi\=100) \# 2. 创建画布 ax = fig.add\_subplot(111)  
 ax.bar(x , y1, width\=0.6, color\='C0', label\='A') \# 3. 绘制柱形图 ax.bar(x, y2, width\=0.6, bottom\=y1, color\='C2', label\='B')  
 ax.bar(x , y3, width\=0.6, bottom\=y1 + y2, color\='C3', label\='C')  
 ax.grid(axis\='y', linestyle\='--')  
 ax.set\_axisbelow(True)  
 ax.spines\[\['right', 'top'\]\].set\_color('C7')  
 ax.legend(ncols\=3, loc\='upper center', bbox\_to\_anchor\=(0.45, 0.95))  
 plt.show()

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
👉 CSDN大礼包:gift::[全网最全《Python学习资料》免费赠送:free:!](https://blog.csdn.net/weixin_68789096/article/details/132275547?spm=1001.2014.3001.5502) (安全链接,放心点击)

若有侵权,请联系删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值