Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)

20 篇文章 6 订阅

Python学习-Matplotlib库绘制各类统计图

目录

1、散点图绘制及各类参数介绍
1)绘制散点图,特定函数scatter()
2)利用plot()函数绘制散点图
2、绘制条形图及各类参数介绍,bar()
3、绘制直方图及各类参数介绍,hist()
4、绘制饼状图及各类参数介绍,pie()
5、绘制极坐标图
导入库
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15)  # 导入中文字体,打印中文标签
1、散点图绘制及各类参数介绍
1)绘制散点图,特定函数scatter()

常用参数介绍:
x: x轴坐标;y: y轴坐标;s: 点标记的大小;c: 标记颜色;marker: 标记的形状;alpha: 标记透明度[0,1]
不常用:
cmap: 设置颜色条;norm: 颜色范围归一化;vmin,vmax: 颜色最大最小值;
linewidths: 标记边缘线形状;edgecolors: 标记边缘线颜色

X = np.random.randn(100)  # 生成x轴的100个随机数
Y = np.random.randn(100)  # 生成y轴的100个随机数
plt.figure(1)
plt.title("散点图练习", fontproperties=font)
plt.scatter(x=X, y=Y, s=100, c='y', marker='*', alpha=1, \
            cmap='hot', norm=None, vmin=0, vmax=100, linewidths=None, edgecolors=None)

plt.xlabel('横坐标', fontproperties=font)
plt.ylabel('纵坐标', fontproperties=font)
plt.show()
输出

在这里插入图片描述

2)利用plot()函数绘制散点图,必须指定图标,且不能有关于画线的指定条件,否则将会画成线
X = np.random.randn(100)  # 生成x轴的100个随机数
Y = np.random.randn(100)  # 生成y轴的100个随机数
plt.figure(2)
plt.plot(X, Y, ".", color='b')
输出

在这里插入图片描述

2、绘制条形图及各类参数介绍,bar()

参数介绍:
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center’基座在x位置,'edge’基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签

plt.figure(3)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
c = ['大一', '大二', '大三', '大四']  # x轴刻度标记
x = np.arange(len(c))*0.8  # x轴刻度数,条形基座中间x位置数
g = [34, 32, 37, 35]  # 条形图高度
b = [32, 31, 38, 40]
g1 = plt.bar(x=x, height=g, width=0.2, bottom=None, alpha=0.8, color='red', label="girl", \
             align='edge', data=None)
"""
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center'基座在x位置,'edge'基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签
"""
b1 = plt.bar([x1+0.2 for x1 in x], height=b, width=0.2, alpha=0.8, color='blue', label="boy", align='edge')
"""
[x1+0.2 for x1 in x]:
for x1 in range(len(x)):
    x[x1] += 1
"""
plt.title('各年级人数统计')
plt.legend()  # 显示图例
plt.ylim(0, 80)  # y轴刻度范围
plt.ylabel('人数')  # y轴标签
plt.xticks([index + 0.2 for index in x], c)  # 显示条形图的标签
plt.xlabel('班级')  # x轴标签

# 在每一个条形图的顶部设置顶值
for r1 in g1:
    height = r1.get_height()
    plt.text(r1.get_x()+r1.get_width()/2, height+1, str(height), ha="center", va="bottom")

for r2 in b1:
    height = r2.get_height()
    plt.text(r2.get_x()+r2.get_width()/2, height+1, str(height), ha="center", va="bottom")

plt.show()
输出

在这里插入图片描述

3、绘制直方图及各类参数介绍,hist()

参数介绍:
x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签

plt.figure(4)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
data = np.random.randn(1000)
plt.hist(x=data, bins=20, range=None, density=False, weights=None, cumulative=False, bottom=None, \
         histtype='stepfilled', align='mid', alpha=0.9, orientation='vertical', rwidth=None, log=False, \
         color='y', stacked=True, edgecolor='black')
"""
# x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签
"""
plt.xlabel('概率分布区间')
plt.ylabel('频数or频率')
plt.title('分布直方图')

plt.show()
输出

在这里插入图片描述

4、绘制饼状图及各类参数介绍,pie()

参数介绍:
explode:切片到圆心的距离
shadow:阴影
radius: 半径

plt.figure(5)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
lab = ['感冒', '肠胃不适', '过敏', '其它']
data = [48, 21, 18, 13]
color = ['red', 'green', 'blue', 'yellow']
explode = (0.1, 0, 0, 0)
plt.pie(x=data, explode=explode, labels=lab, colors=color,  autopct='%1.1f%%', pctdistance=0.6, shadow=False, \
        labeldistance=1.1, startangle=0, radius=0.5, counterclock=True, wedgeprops=None, textprops=None, \
        center=(0, 0), frame=None, rotatelabels=True)

"""
explode:切片到圆心的距离
shadow:阴影
radius: 半径
"""

plt.title('生病人数及原因统计')
plt.legend()  # 产生图例

plt.show()
输出

在这里插入图片描述

5、绘制极坐标图

注:画极坐标时,需要指定subplot()的参数projection=‘polar’

plt.figure(6)
t = np.arange(0, 2*np.pi, 0.2)
ax1 = plt.subplot(projection='polar')
ax1.plot(t, t/6, '--', lw=2)

plt.show()
输出

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下如何使用Matplotlib绘制这些形。 首先,您需要在Python中安装Matplotlib,可以使用以下命令进行安装: ```python !pip install matplotlib ``` 接下来,我将为您演示如何使用Matplotlib绘制散点图、折线直方图饼状图。 1. 散点图 散点图用于显示两个变量之间的关系。下面是一个简单的例子: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.scatter(x, y) plt.show() ``` 这将绘制一个简单的散点图,其中x轴表示第一个变量,y轴表示第二个变量。 2. 折线 折线用于显示一组数据随时间的变化。下面是一个简单的例子: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) plt.show() ``` 这将绘制一个简单的折线,其中x轴表示时间,y轴表示数据。 3. 直方图 直方图用于显示一组数据的分布情况。下面是一个简单的例子: ```python import matplotlib.pyplot as plt data = [1, 2, 2, 3, 3, 3, 4, 4, 5] plt.hist(data, bins=5) plt.show() ``` 这将绘制一个简单的直方图,其中x轴表示数据的范围,y轴表示数据的数量。 4. 饼状图 饼状图用于显示一组数据的占比情况。下面是一个简单的例子: ```python import matplotlib.pyplot as plt labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] plt.pie(sizes, labels=labels) plt.show() ``` 这将绘制一个简单的饼状图,其中每个标签表示一个数据点,大小表示占比。 希望这些例子可以帮助您使用Matplotlib绘制散点图、折线直方图饼状图

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值