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

news2025/4/25 13:32:15

文章传送门

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 plt

x = [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 plt

x = [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 plt

x = [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 plt

sizes = [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 plt

sizes = [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 np

x = 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 np

x = 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.coloradmin.cn/o/1382129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读元宇宙改变一切笔记07_硬件与互操作性(上)

1. 元宇宙的头号入口 1.1. 元宇宙最令人兴奋的地方在于&#xff0c;我们可以借此开发用来访问、渲染和操纵它的新设备 1.1.1. App Newton于1993年发布&#xff0c;是世界上第一款掌上电脑 1.2. 功能超强大又轻巧的AR和沉浸式VR头显 1.2.1.…

AI智能创作软件,颠覆你的写作体验

你是否想过&#xff0c;有一天&#xff0c;文字创作不再受限于人的思维和表达能力&#xff1f;AI智能文章创作就是这样一个神奇的存在。它运用先进的自然语言处理技术&#xff0c;通过对大量数据的深度学习&#xff0c;根据需要自动生成文章。你只需输入关键词或主题&#xff0…

【天龙八部】攻略day6

关键字&#xff1a; 灵武、寻宝要求、雁门 1】灵武选择 西凉枫林&#xff0c;锦带&#xff0c;短匕 白溪湖&#xff0c;明镜&#xff0c;双刺 竹海&#xff0c;玉钩&#xff0c;锁甲 2】楼兰寻宝需求 等级80级&#xff0c;40级前6本心法 3】雁门奖励 简单35*4元佑碎金 普…

机器学习扩散模型简介

一、说明 扩散模型的迅速崛起是过去几年机器学习领域最大的发展之一。在这本易于理解的指南中了解您需要了解的有关扩散模型的所有信息。 扩散模型是生成模型&#xff0c;在过去几年中越来越受欢迎&#xff0c;这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界…

强化学习应用(二):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

Docker实战10|实现volum数据卷

上一篇文章中&#xff0c;仔细讲解了Docker是如何改变当前的root文件系统以及mount等操作。 本文继续讲解Docker是如何实现Volum数据卷的。 实现Volume数据卷 获取代码 git clone https://gitee.com/mjreams/docker.git 上一小节介绍了如何使用AUFS包装busybox&#xff0c…

【Python】使用tkinter设计开发Windows桌面程序记事本(5)

上一篇&#xff1a;【Python】使用tkinter设计开发Windows桌面程序记事本&#xff08;4&#xff09;-CSDN博客 下一篇&#xff1a;待羽翼丰满之时&#xff0c;必将是文章更新之日&#xff01; 作者发炎 本篇文章继承了前面四篇文章&#xff0c;并且实现了新建、保存、另存、打…

Open3D 计算点云质心和中心(18)

Open3D 计算点云质心和中心(18) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 质心和中心是有所区别的,点云质心可以看作每个点的坐标均值,点云中心可以看作点云所在包围盒的中心,这也是上一章坐标最值的常用方法,下面就两种方法进行实现(图例,大概就是这个意思…

JVM工作原理与实战(十五):运行时数据区-程序计数器

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、程序计数器 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理内存&#xff0c;确保安全&#xff0c;支持多线程和提供…

电子学会C/C++编程等级考试2023年09月(四级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:酒鬼 Santo刚刚与房东打赌赢得了一间在New Clondike 的大客厅。今天,他来到这个大客厅欣赏他的奖品。房东摆出了一行瓶子在酒吧上。瓶子里都装有不同体积的酒。令Santo高兴的是,瓶子中的酒都有不同的味道。房东说道:“你可以喝尽…

用ChatGPT写论文的重要指令

使用ChatGPT写论文&#xff0c;chatgpt3.5的普通版本与ChatGPTPLUS版本我都尝试过&#xff0c;这里我还是比较喜欢ChatGPTPLUS来写论文 快速订阅ChatGPTPLUS方法&#xff0c;0年费、0月费 具体步骤可参考 亲测&#xff0c;Chatgpt4.0充值&#xff08;虚拟卡充值&#xff09;-…

网络安全B模块(笔记详解)- 网络渗透测试

LAND网络渗透测试 1.进入虚拟机操作系统:BT5中的/root目录,完善该目录下的land.py文件,填写该文件当中空缺的Flag1字符串,将该字符串作为Flag值(形式:Flag1字符串)提交;(land.py脚本功能见该任务第6题) 输入flag sendp(packet) Flag:sendp(packet) 2.进入虚拟机操作…

QSpace:Mac上的简洁高效多窗格文件管理器

在Mac用户中&#xff0c;寻找一款能够提升文件管理效率的工具是常见的需求。QSpace&#xff0c;一款专为Mac设计的文件管理器&#xff0c;以其简洁的界面、高效的多窗格布局和丰富的功能&#xff0c;为用户提供了一个全新的文件管理体验。 QSpace&#xff1a;灵活与功能丰富的结…

CMake+QT+大漠插件的桌面应用开发

文章目录 CMakeQT大漠插件的桌面应用开发说明环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发 说明 在CMake大漠插件的应用开发——处理dm.dll&#xff0c;免注册调用大漠插件中已经说明了如何免注册调用大漠插件&#xff0c;以及做了几个简单的功能调用&#x…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 第1章 HTML5+CSS3初体验 项目1-1 三栏布局页面

项目展示 三栏布局是一种常用的网页布局结构。 除了头部区域、底部区域外&#xff0c;中间的区域&#xff08;主体区域&#xff09;划分成了三个栏目&#xff0c;分别是左侧边栏、内容区域和右侧边栏&#xff0c;这三个栏目就构成了三栏布局。当浏览器的宽度发声变化时&#x…

最全对象存储(云盘)挂载本地主机或服务器

1.对象存储介绍 1.1 分类 分布式存储的应用场景相对于其存储接口&#xff0c;现在流行分为三种: 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在&#xff0c;这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口&#xff0c;块存储一般…

androidkiller的两种异常情况

第一种反编译时异常&#xff1a; Exception in thread “main” org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 修改方法&#xff1a; 编辑 AndroidKiller 的 bin/apktool 目录下有一个 apktool.bat 文件 修改成…

nmealib 库移植 - -编译报错不完全类型 error: field ‘st_atim’ has incomplete type

一、报错提示-不完全类型(has incomplete type) Compiling obj/main.o from main.c.. arm-linux-gcc -g -w -stdgnu99 -DLINUX -I./ -Inmealib/inc/ -c -o obj/main.o main.c In file included from /home/user/Desktop/nuc980-sdk/sdk/arm_linux_4.8/usr/include/sys/stat…

豆包ai介绍

豆包是字节跳动基于云雀模型开发的AI工具&#xff0c;具有强大的语言处理能力和广泛的应用场景&#xff0c;无论是在学习、工作、生活中&#xff0c;都能派上用场。 豆包可以帮助打工人和创作者提升效率&#xff0c;完成各种工作任务&#xff0c;又能扮演各类AI角色进行高情商…

2003-2021年地级市知识产权保护水平数据

2003-2021年地级市知识产权保护水平数据 1、时间&#xff1a;2003-2021年 2、指标&#xff1a;city、year、地方知识产权审判结案数、地方GDP、国内知识产权审判结案数、国内GDP、知识产权保护水平 3、来源&#xff1a;北大法宝、城市年鉴、统计年鉴、历年知识产权保护状况白…