当前位置: 首页 > news >正文

Python Matplotlib库:基本绘图补充

Python Matplotlib库:基本绘图补充

  • 1.引言
  • 2.散点图
  • 3.柱状图
  • 4.火柴图
  • 5.阶梯图
  • 6.填充

1.引言

上期我们讲了 Matplotlib 库的基本语法,并以折线图为例,绘制了我们的第一幅图表。(参见:Python 数据可视化:Matplotlib库的使用)

这期我们来说说如何用 Matplotlib 库绘制其他常用图表。


2.散点图

plot()Matplotlib 库中绘制折线图的方法,而绘制散点图,我们会使用scatter(),它的语法格式如下:

plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

参数说明
xy长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
s点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
c点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。
marker点的样式,默认小圆圈 ‘o’。
cmapColormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。
normNormalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
vminvmax亮度设置,在 norm 参数存在时会忽略。
alpha透明度设置,0-1 之间,默认 None,即不透明。
linewidths标记点的长度。
edgecolors颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None。
plotnonfinite布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
**kwargs其他参数。

代码实例:

统计各班身高体重分布:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体为黑体
plt.rcParams["axes.unicode_minus"]=False # 防止负号乱码

plt.figure(figsize=(16, 9))
plt.suptitle("各班同学的身高体重分布图")

x1 = [60,42,56,44,60,38,55,48]
x2 = [61,51,55,46,81,44,66,51]
x3 = [70,45,75,60,63,58,71,49]
y1 = [163,153,164,156,165,156,168,157]
y2 = [170,159,171,159,171,160,172,161]
y3 = [178,165,178,165,180,168,180,168]

plt.subplot(221)
plt.scatter(x1,y1,c='b')
plt.title("一班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(222)
plt.scatter(x2,y2,c='g')
plt.title("二班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(223)
plt.scatter(x3,y3,c='r')
plt.title("三班")
plt.xlabel("体重")
plt.ylabel("身高")

plt.subplot(224)
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='g')
plt.scatter(x3,y3,c='r')
plt.title("汇总图")
plt.xlabel("体重")
plt.ylabel("身高")
plt.legend(["一班","二班","三班"])

plt.show()

效果图:
散点图


3.柱状图

Matplotlib 库中,我们使用bar()方法来绘制柱状图,它的语法格式如下:

plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:

参数说明
x浮点型数组,柱形图的 x 轴数据。
height浮点型数组,柱形图的高度。
width浮点型数组,柱形图的宽度。
bottom浮点型数组,底座的 y 坐标,默认 0。
align柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。
‘edge’:将柱形图的左边缘与 x 位置对齐。
要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。
**kwargs其他参数。

或者使用barh()绘制横向的柱状图,语法格式如下:

plt.barh(y, width, height=0.8, left=None, *, align='center', **kwargs)

参数说明:

参数说明
y浮点型数组,柱形图的 y 轴数据。
width浮点型数组,柱形图的宽度。
height浮点型数组,柱形图的高度。
left浮点型数组,底座的 x 坐标,默认 0。
align柱形图与 y 坐标的对齐方式,‘center’ 以 y 位置为中心,这是默认值。
‘edge’:将柱形图的左边缘与 y 位置对齐。
要对齐上边缘的条形,可以传递负数的宽度值及 align=‘edge’。
**kwargs其他参数。

代码实例:

对比参赛人员的表现分:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))
plt.suptitle("参赛人员的表现分")

people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
performance = (4, 5, 8, 3, 6)

plt.bar(people, performance)

plt.show()

效果图:
柱状图


4.火柴图

Matplotlib 库中,我们可以使用stem()方法来绘制火柴图,它的语法格式如下:

plt.stem([locs,] heads, linefmt=None, markerfmt=None, basefmt=None)

参数说明:

参数说明
locs对于垂直火柴图,为火柴的 x 坐标。对于水平火柴图,为火柴的 y 坐标。
heads对于垂直火柴图,为火柴的 y 坐标。对于水平火柴图,为火柴的 x 坐标。
linefmt线条格式字符,可指定线条的颜色和样式。
markerfmt标记格式字符,可指定火柴头的颜色和样式。
basefmt基线格式字符,可指定基线的颜色和样式。
orientation默认为 ‘vertical’,如果为 ‘vertical’,将生成垂直火柴图,否则将生成水平火柴图。
bottom默认为0,基线的 y/x 坐标(取决于方向)。
label图例中火柴的标签。

代码实例:

对比参赛人员的表现分:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))
plt.suptitle("参赛人员的表现分")

x = ("张三", "李四", "王五", "赵六", "孙七")
y = (4, 5, 8, 3, 6)

plt.stem(x, y, linefmt="r-.",markerfmt="gs",basefmt="b-")

plt.show()

效果图:
火柴图


5.阶梯图

Matplotlib 库中,我们可以使用step()方法来绘制阶梯图,它的语法格式如下:

plt.step(x, y, [fmt], *, data=None, where='pre', **kwargs)

参数说明:

参数说明
xy节点的 x,y 坐标值。
fmt格式字符串,与plot()方法的format_string参数类似。
data两个Iterables,包含已标记数据的标签名称。
where设置阶梯所在位置,取值范围为{‘pre’, ‘post’, ‘mid’},默认值为’pre’。
**kwargsplot()

代码实例:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 防止负号乱码

plt.figure(figsize=(8, 7))

x = list(range(1, 6))
y = (4, 5, 8, 3, 6)

plt.step(x, y, "b-.s")

plt.show()

效果图:
阶梯图

6.填充

Matplotlib 库中,我们可以使用fill_between()方法来填充一段区间,它的语法格式如下:

plt.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)

参数说明:

参数说明
x节点的 x 坐标值。
y1第一条曲线节点的 y 坐标值。
y2第二条曲线节点的 y 坐标值。
where排除填充区间。
**kwargs其他参数。

代码实例:

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] # 设置字体为黑体
plt.rcParams["axes.unicode_minus"]=False # 防止负号乱码

plt.figure(figsize=(16, 9))
plt.suptitle("函数图")

f1 = lambda x:x**0.5
f2 = lambda x:x
f3 = lambda x:x**2

x = list(range(0,6))
y1 = [f1(i) for i in x]
y2 = [f2(i) for i in x]
y3 = [f3(i) for i in x]

plt.plot(x,y1,'b-v')
plt.plot(x,y2,'g--1')
plt.plot(x,y3,'r-.s')
plt.fill_between(x,y1,y2,color='b',alpha=0.2)
plt.fill_between(x,y2,y3,color='r',alpha=0.2)
plt.title("对比图")
plt.legend(["√x","x","x^2"])

plt.show()

效果图:
填充

相关文章:

  • 类与对象(下)
  • 【DouZero】 强化学习+self play达到人类玩家斗地主水平。
  • CMake Tutorial 巡礼(5)_添加系统自察
  • 注意力机制(attention)学习笔记
  • Cocos3.x 对象池NodePool使用介绍和注意事项
  • 计算机二级WPS 选择题(模拟和解析二)
  • java计算机毕业设计基于安卓Android微信的儿童疫苗接种管理小程序uniApp
  • 什么是协程?
  • [配置] 安卓 | 将微信公众号文章保存到Notion
  • Docker启动mysql服务
  • 基于java安全管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • 为何基于树的模型在表格型数据中能优于深度学习?
  • 贪心+二分
  • Geoserver Windows 安装部署教程
  • haproxy,nginx,keepalived综合运用
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 0x05 Python数据分析,Anaconda八斩刀
  • 30天自制操作系统-2
  • canvas 五子棋游戏
  • ES学习笔记(12)--Symbol
  • HTML5新特性总结
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java2019面试题北京
  • JavaScript 基础知识 - 入门篇(一)
  • java中的hashCode
  • JS笔记四:作用域、变量(函数)提升
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • tweak 支持第三方库
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 手写一个CommonJS打包工具(一)
  • 鱼骨图 - 如何绘制?
  • 怎么将电脑中的声音录制成WAV格式
  • 从如何停掉 Promise 链说起
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Linux·i2c驱动架构​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #define 用法
  • #NOIP 2014#Day.2 T3 解方程
  • #控制台大学课堂点名问题_课堂随机点名
  • #微信小程序:微信小程序常见的配置传值
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)Nginx简介和安装教程
  • (11)MATLAB PCA+SVM 人脸识别
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm码农论坛 毕业设计 231126
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (数据结构)顺序表的定义
  • (译) 函数式 JS #1:简介
  • ***原理与防范
  • .Net CoreRabbitMQ消息存储可靠机制