【Python数据可视化】matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图

news/2024/2/23 14:33:47/文章来源:https://blog.csdn.net/senlin_6688/article/details/135484368

文章传送门

Python 数据可视化
matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图
matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值
matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果
matplotlib之设置子图:绘制子图、子图共享x轴坐标
matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图
matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

目录

  • 简述 / 前言
  • 1. 折线图
  • 2. 柱状图(条形图)
  • 3. 饼图
  • 4. 直方图

简述 / 前言

这篇文章主要讲解Python数据可视化库 matplotlib 的一些操作,由于知识点较多,所以应该会分多篇文章进行分享。具体可以参考 matplotlib 官网,下面附上一些小贴士,5 张图片掌握 matplotlib 主要知识点,这5张图片来源于 matplotlib 官网的备忘录。后面的文章只会总结一些重点内容,不会面面俱到,所以对绘制某一个图形感兴趣的伙伴,可以直接去官网看教程和例子。更详细的教程可能会在 Python 教程那里给出,等有时间再写吧~

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


这一篇主要分享用 matplotlib 绘制常用图形:折线图、柱状图(条形图)、饼图和直方图。

画完图都要使用 show() 方法才能看到图像哦~


1. 折线图

绘制折线图,一般需要读取 x, y 轴的数据,再通过 plot 方法绘制折线图,示例如下:

import matplotlib.pyplot as plt
import numpy as np# 设置x轴和y轴的坐标
x = np.arange(0, 9, 2)      # [0, 9) 每间隔1个数取一次值,即:x = [0 2 4 6 8]
y = np.array([0, 1, 4, 6, 8])
print(f"x = {x}")
print(f"y = {y}")plt.plot(x, y)  # 通过plot方法绘制折线
plt.show()  # 通过show方法展示

输出:
请添加图片描述

可以看到在绘制折线图时,只给了它坐标轴的值,但是没有给线条颜色、样式等属性,这是因为 matplotlib 已经封装好一些默认值了,如果要修改,可以通过可变参数 **kwargs 来改动,常用的属性如下:

属性含义
color线的颜色
linewidth线的宽度(厚度)
linestyle线的样式 【虚线::,破折线:--,点划线:-.
marker坐标点的标记方式 【实心圆:o,加号:+,五角星:*,点:.,叉叉:x,上三角形:^,下三角形:v,左三角形:<,右三角形:>,正方形:s,菱形:d,五边形:p,六边形:h,下划线:(_或者数字的01)】
alpha透明度,取值范围:[0, 1],值越小越透明

现在对上面的折线图进行修改,看看效果:

import matplotlib.pyplot as plt
import numpy as np# 设置x和y轴的坐标
x = np.arange(0, 9, 2)
plt.plot(x, x * 0.5, color='#33141e', linewidth='10', linestyle=':', alpha=0.2)
plt.plot(x, x, color='blue', linewidth='1', linestyle='--', marker='v', alpha=0.5)
plt.plot(x, x * 1.5, color='red', linewidth='3', linestyle='-.', marker='o', alpha=1)
plt.show()

输出:
请添加图片描述

2. 柱状图(条形图)

关键语句:matplotlib.pyplot.bar(x, height, ...)

一般会这么写:matplotlib.pyplot.bar(x, height, alpha=alpha, width=width, color=color, edgecolor=edgecolor, label=label, lw=lw),各参数含义如下:

属性含义
xx轴的位置序列
height每个x对应的条形图高度,注意:len(x) == len(height)
alpha透明度,取值范围:[0, 1],值越小越透明
width每条柱状图的宽度(也可以只填一个数,这时全部柱状图的宽度都是一致的)
color每个柱状图的颜色【它会根据你给的颜色循环使用,比如有4条柱状图,你只给了3种颜色:红黄蓝,那么最后图形的颜色就是:红黄蓝红
edgecolor边缘的颜色
label图例
lw边缘线的宽度

示例:

import matplotlib.pyplot as pltx = [1, 2, 3, 4]  # x轴刻度
height = [10, 20, 15, 18]  # y轴刻度(height)
color = ['red', 'yellow', 'blue', 'green']
x_label = ['class1', 'class2', 'class3', 'class4']
# 绘制x刻度标签
plt.xticks(x, x_label)
# 绘制柱状图
plt.bar(x, height, color=color, edgecolor='black')
plt.show()

输出:
请添加图片描述

修改一些样式,并只给定3种颜色:

import matplotlib.pyplot as pltx = [1, 2, 3, 4]  # x轴刻度
height = [10, 20, 15, 18]  # y轴刻度
color = ['red', 'yellow', 'blue']   # 只给定3种颜色
x_label = ['class1', 'class2', 'class3', 'class4']
# 绘制x刻度标签
plt.xticks(x, x_label)
# 绘制柱状图
plt.bar(x, height, alpha=0.8, width=0.2, color=color, edgecolor='black', lw=3)
plt.show()

输出:
请添加图片描述

:因为在语句中加入了 plt.xticks(x, x_label),所以x轴显示的不是数值,如果注释掉那句话,那么图形是这样的~
请添加图片描述

如果不是一次性传入数据,而是传一次数据,画一个柱状图,那么每个柱状图的颜色就会不一样。

示例:

import matplotlib.pyplot as pltx = [1, 2, 3, 4]  # x轴刻度
height = [10, 20, 15, 18]  # y轴刻度
color = ['red', 'yellow', 'blue']   # 只给定3种颜色
x_label = ['class1', 'class2', 'class3', 'class4']
# 绘制x刻度标签
# plt.xticks(x, x_label)
# 绘制柱状图
# plt.bar(x, height)
for xi, yi in zip(x, height):	# 一个一个柱状图画plt.bar(xi, yi)
plt.show()

输出:
请添加图片描述

3. 饼图

关键语句:matplotlib.pyplot.pie(sizes, ...)

一般会这么写:matplotlib.pyplot.pie(sizes, explode=explode, labels=labels, colors=colors, startangle=startangle, radius=radius),其中各属性含义如下:

属性含义
sizes饼图每个块的值
explode离开中心点的距离(注意:len(explode) == len(sizes)
labels饼图每个块要说明的文字
colors饼图每个块的颜色【它会根据你给的颜色循环使用,比如有4块饼图,你只给了3种颜色:红黄蓝,那么最后图形的颜色就是:红黄蓝红
autopct显示每块饼图划分的比例,并设置显示的小数位数
shadow(布尔值)是否显示阴影
startangle起始角度,默认是从x轴正方向逆时针开始画图
radius饼图的半径

示例:

import matplotlib.pyplot as pltsizes = [10, 20, 15, 18, 50]
explode = (0.1, 0.1, 0.1, 0.1, 0.1)
labels = ['class1', 'class2', 'class3', 'class4', 'class5']
colors = ['blue', 'red', 'green', 'yellow', 'pink', 'black']
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', shadow=True, startangle=30, radius=0.8)
plt.show()

输出:
请添加图片描述

如果颜色没给够,那么图形就是这样的:

import matplotlib.pyplot as pltsizes = [10, 20, 15, 18, 50]
explode = (0, 0.1, 0, 0, 0)
labels = ['class1', 'class2', 'class3', 'class4', 'class5']
colors = ['blue', 'red', 'green']
plt.pie(sizes, explode=explode, labels=labels, colors=colors, startangle=30, radius=1.2)
plt.show()

输出:
请添加图片描述

:这样看上去就很难区分每部分了,甚至还会出现两个块颜色相同合并在了一起,所以颜色一定要给够!哪怕颜色给多了也不会报错,它只会按照给的颜色顺序赋值!!!

4. 直方图

关键语句:matplotlib.pyplot.hist(x, bins, ...)

一般会这么写:matplotlib.pyplot.hist(x, bins, density=density, histtype=histtype, align=align, color=color, label=label),其中各属性含义如下:

属性含义
x在x轴上的数值y(数据分布情况)
bins柱状图个数(数据区间)
density是否将直方图的频数转换成频率,默认值为:False(y轴为频数),可以改为 True(y轴为频率)
histtype直方图形状,可以选:barbarstackedstep(梯形)、stepfilled(对梯形内部进行填充),默认是bar
align不建议修改】控制柱状图水平分布,可以选:leftmid(默认值)、right
color直方图颜色
label标签,展示图标时使用

示例:

import matplotlib.pyplot as plt
import numpy as npx = np.random.randint(10, 51, 300)
bins = np.arange(10, 51, 2)     # 设置连续的边界值,即直方图的分布区间
# 绘制直方图
plt.hist(x, bins)
plt.show()

输出:
请添加图片描述

修改一些属性试试:

import matplotlib.pyplot as plt
import numpy as npx = np.random.randint(10, 51, 300)
bins = np.arange(10, 51, 2)     # 设置连续的边界值,即直方图的分布区间
# 绘制直方图
plt.hist(x, bins, density=True, histtype='step', align='left', color='green')
plt.show()

输出:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_925264.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;阿里巴巴淘天Java开发工程师&#xff0c;CSDN博客专家&#x1f4d5;系列专栏&#xff1a;Spring源码、Netty源码、Kafka源码、JUC源码、dubbo源码系列&#x1f525;如果感觉博主的文章还不错…

JVM基础(7)——ParNew垃圾回收器

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

市场复盘总结 20240116

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 18% 二进三&#xff1a; 进级率低 60% 最常用的二种方法&#xff1a; 方法一&am…

【iOS】数据持久化(四)之FMDB基本使用

正如我们前面所看到的&#xff0c;原生SQLite API在使用时还是比较麻烦的&#xff0c;于是&#xff0c;开源社区就出现了一系列将SQLite API进行封装的库&#xff0c;其中FMDB的被大多数人所使用 FMDB和SQLite相比较&#xff0c;SQLite比较原始&#xff0c;操作比较复杂&#…

GPT/GPT4在人工智能,深度学习,编程等领域应用

详情点击链接&#xff1a;GPT/GPT4在人工智能&#xff0c;深度学习&#xff0c;编程等领域应用 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Ge…

价值7500的在线授权网站源码支持IP+域名+双向授权全开源

PHP授权验证更新系统完整版&#xff0c;一键更新系统&#xff0c;一键卡密生成自助授权功能&#xff0c;域名ip双重验证功能等等 修复盗版检测&#xff0c;确保实时查看盗版 修复在线加密系统&#xff0c;一键加密 授权系统几乎所有的程序都能整合使用,包括您的app和计算机程序…

数据结构实战:变位词侦测

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;逐个比较法1、编写源程序2、代码解释说明&#xff08;1&#xff09;函数逻辑解释&#xff08;2&#xff09;主程序部分 3、运行程序&#xff0c;查看结果4、计算时间复杂度 &#xff08;二&#xff09;排序比较法1…

docker 安装 zookeeper ( 亲测有效 )

目录 1 安装2 验证 1 安装 上传 zookeeoer.tar 包 到服务器 上传之后tar 包&#xff0c;将他变成镜像 输入docker images,发现目前是没有镜像的&#xff0c;现在将tar 包变成镜像 docker load -i zookeeper.tar因为我们要使用 Docker-compose 去管理容器&#xff0c;所以要使…

网络共享服务

存储类型&#xff1a;直连式&#xff08;DAS&#xff09;:距离最近&#xff0c;存储设备且直接连接到服务器上 存储区域网络&#xff08;SAN&#xff09;&#xff1a;适用于大型应用或数据库系统&#xff0c;可以使用文件的空间&#xff0c; 以及管理空间…

深入理解 Flink(五)Flink Standalone 集群启动源码剖析

前言 Flink 集群的逻辑概念&#xff1a; JobManager(StandaloneSessionClusterEntrypoint) TaskManager(TaskManagerRunner) Flink 集群的物理概念&#xff1a; ResourceManager(管理集群所有资源&#xff0c;管理集群所有从节点) TaskExecutor(管理从节点资源&#xff0c;接…

使用WAF防御网络上的隐蔽威胁之SSRF攻击

服务器端请求伪造&#xff08;SSRF&#xff09;攻击是一种常见的网络安全威胁&#xff0c;它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造&#xff08;CSRF&#xff09;相比&#xff0c;SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它&#xff0…

贪心算法(思路)

最近在cf上做了很多贪心的题&#xff0c;写篇博客来总结一下 Problem - C - Codeforces 看第一道题 不难看出&#xff0c;我们需要在数组中找到一段奇偶相间的序列&#xff0c;要使他们的和最大&#xff0c; 在图中我们假设[1,2]和[3,4]是奇偶相间的序列&#xff0c;我们在在…

【Docker】数据卷挂载以及宿主机目录挂载的使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

docker部署私人云盘nextcloud

首先查看效果 1.拉取镜像 docker pull nextcloud 2.创建目录 mkdir -p /data/nextcloud/{config,data,apps} 3.创建实例 docker run -itd --name yznextcloud -v /data/nextcloud/config:/var/www/html/config -v /data/nextcloud/data:/var/www/html/data -v /data/nextc…

关于html导出word总结一

总结 测试结果不理想&#xff0c;html-to-docx 和 html-docx-js 最终导出的结果 都 差强人意&#xff0c;效果可以见末尾的附图 环境 "electron": "24.3.0" 依赖库 html-docx-js html-docx-js - npm html-to-docx html-to-docx - npm file-saver…

基于DNA的密码学和隐写术综述

摘要 本文全面调研了不同的脱氧核糖核酸(DNA)-基于密码学和隐写术技术。基于DNA的密码学是一个新兴领域,利用DNA分子的大规模并行性和巨大的存储容量来编码和解码信息。近年来,由于其相对传统密码学方法的潜在优势,如高存储容量、低错误率和对环境因素的抗性,该领域引起…

JDK8-JDK17版本升级

局部变量类型推断 switch表达式 文本块 Records 记录Records是添加到 Java 14 的一项新功能。它允许你创建用于存储数据的类。它类似于 POJO 类&#xff0c;但代码少得多&#xff1b;大多数开发人员使用 Lombok 生成 POJO 类&#xff0c;但是有了记录&#xff0c;你就不需要使…

第 2 章 数据结构和算法概述

文章目录 2.1 数据结构和算法的关系2.2 看几个实际编程中遇到的问题2.2.1 问题一-字符串替换问题2.2.2 一个五子棋程序2.2.3 约瑟夫(Josephu)问题(丢手帕问题)2.2.4 其它常见算法问题: 2.3 线性结构和非线性结构2.3.1 线性结构2.3.2 非线性结构 2.1 数据结构和算法的关系 数据 …

使用Qt连接scrcpy-server控制手机

Qt连接scrcpy-server 测试环境如何启动scrcpy-server1. 连接设备2. 推送scrcpy-server到手机上3. 建立Adb隧道连接4. 启动服务5. 关闭服务 使用QTcpServer与scrcpy-server建立连接建立连接并视频推流完整流程1. 开启视频推流过程2. 关闭视频推流过程 视频流的解码1. 数据包协议…

【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决)

【STM32】HAL库的STOP低功耗模式UART串口唤醒&#xff0c;第一个接收字节出错的问题&#xff08;已解决&#xff09; 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试结论和猜想解决方案附录&#xff1a;Cortex-M…