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

文章传送门

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()

输出:
请添加图片描述

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

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

相关文章

Angular系列教程之管道

文章目录 管道的基本概念使用内置管道创建自定义管道总结 在Angular中&#xff0c;管道&#xff08;Pipe&#xff09;是一个非常重要的概念。它们允许我们对数据进行转换、格式化和显示&#xff0c;并且可以轻松地在模板中使用。本篇文章将介绍Angular中的管道概念&#xff0c;…

golang文件相对路径问题

目录结构 2.具体代码&#xff1a; const dataFile "../data/data.json"_, fileName, _, _ : runtime.Caller(1)dataPath : path.Join(path.Dir(fileName), dataFile)fmt.Println(dataPath)// open filefile, err : os.Open(dataPath)if err ! nil {log.Fatalln(err…

AI扩展手写数字识别应用(二)

理解代码 输入处理 在新应用的代码部分&#xff0c;和我们在手写数字识别课程介绍的代码比起来&#xff0c;差别最大的地方就在于如何处理输入。在上个案例中&#xff0c;我们只需要简单地将正方形区域中的图像格式调整一下&#xff0c;即可用作MNIST模型的输入。而在本文的案…

【运维】安装双系统之后,如何删除主硬盘的Linux的引导,图文教程

前置条件&#xff1a;已经安装了windows10系统和Linux系统&#xff0c;而且windows10系统是C盘主要盘&#xff0c;Linux系统是安装在别的硬盘上&#xff0c;这个时候C盘主要盘里面的引导分区里是由Linux的引导的&#xff0c;所以打开电脑之后才能让你选是使用windows系统还是使…

一文了解Spring线程池(超详细+干货满满)

Spring默认线程池 simpleAsyncTaskExecutor Spring异步线程池的接口类是TaskExecutor &#xff0c;本质还是 java.util.concurrent.Executor&#xff0c;没有配置的情况下&#xff0c;默认使用的是 simpleAsyncTaskExecutor Component EnableAsync public class ScheduleTask…

josef约瑟 漏电继电器 LLJ-400F Φ100 分体式结构,导轨安装

LLJ-400F AC660V漏电继电器是一种检测线路触&#xff08;漏&#xff09;电&#xff0c;并发出一个机械开闭信号至控制电路装置。它可与各种规格的低压断路器或交流接触器组成组合式剩余电流动作保护器。在如今已实现了较为完善的农村低压电网分级&#xff08;二级或三级&#x…

Linux-->进程概念

文章目录 进程进程概念操作系统管理进程描述进程-PCB组织进程task_strcut 查看Linux下进程信息通过系统文件查看通过命令查看 通过系统调用获取进程标示符通过系统调用frok创建进程fork的使用进程状态运行阻塞挂起Linux下具体的进程状态 前台进程和后台进程kill僵尸进程孤儿进程…

两个方法实现echarts散点图的高光圆点

一、效果图&#xff1a; 二、代码 方法一&#xff1a;通过series的itemStyle进行设置&#xff0c;type为scatter 在 ECharts 中&#xff0c;要在二维散点图上实现看似 3D 的高光圆点效果&#xff0c;可以通过自定义散点图的 itemStyle 属性来实现。虽然无法直接创建真正的 3D…

【备战蓝桥杯】Python 内置模块datetime的介绍和应用

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-0TPX3guDWuSzAs1X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

架构篇02-架构设计的历史背景

文章目录 机器语言&#xff08;1940 年之前&#xff09;汇编语言&#xff08;20 世纪 40 年代&#xff09;高级语言&#xff08;20 世纪 50 年代&#xff09;第一次软件危机与结构化程序设计&#xff08;20 世纪 60 年代~20 世纪 70 年代&#xff09;第二次软件危机与面向对象&…

设计模式——一文即可

对常用设计模式的总结&#xff0c;也是对设计模式专栏的总结 简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式&#xff0c;通过将对象的创建逻辑封装在一个工厂类中&#xff0c;客…

设备树下Led驱动实验-向设备树文件添加Led设备节点

一. 简介 前面简单学习了设备树文件的内容&#xff0c;语法&#xff0c;以及如何向设备树文件中添加设备节点信息。学习了驱动开发时&#xff0c;会使用到的设备树常用OF操作函数。本文我们就开始第一个基于设备树的 Linux 驱动实验-LED驱动实现。 本文具体学习在设备树文件添…

MES管理系统解决方案在汽配企业质量控制中的作用

在当今高度自动化的制造业环境中&#xff0c;质量控制已成为确保产品高品质的关键。特别是在汽配企业&#xff0c;产品通常由多个部件组装而成&#xff0c;且这些部件可能来自不同的供应商。这种复杂的生产模式带来了一个挑战&#xff1a;如何确保每一次生产操作都是正确的&…

使用WAF防御网络上的隐蔽威胁之命令注入攻击

命令注入攻击是网络安全领域的一种严重威胁&#xff0c;它允许攻击者在易受攻击的应用程序上执行恶意命令。 这种攻击通常发生在应用程序将用户输入错误地处理为操作系统命令的情况下。 什么是命令注入攻击 定义&#xff1a;命令注入攻击发生在攻击者能够在易受攻击的应用程…

Pytorch基础:数据读取与预处理——图像读取与存储

Pytorch基础&#xff1a;数据读取与预处理——图像读取与存储 1.读取图片2. 使用 matplotlib 库显示和保存图像 1.读取图片 图像库 opencv-python、imageio、PIL 等都具有图像读取的功能。 (base) PS C:\Users\阳> conda activate yang (yang) PS C:\Users\阳> python …

构建未来教育:在线培训系统开发的技术探讨

随着远程学习的崛起和数字化教育的普及&#xff0c;在线培训系统的开发成为了现代教育的核心。本文将深入讨论在线培训系统的关键技术要点&#xff0c;涵盖前后端开发、数据库管理、以及安全性和身份验证等关键方面。 前端开发&#xff1a;提供交互性与用户友好体验 在构建在…

3d模型为什么打光只显示黑色---模大狮模型网

3D建模是现代制作动画、电影、游戏等数字媒体内容的重要工具。在建模过程中&#xff0c;打光是一个重要的环节&#xff0c;它可以让3D模型更加真实、有趣和生动。然而&#xff0c;如果打光不当&#xff0c;3D模型可能会呈现出黑色的效果&#xff0c;这可能会让人感到困惑和沮丧…

MySQL/Oracle 的 字符串拼接

目录 MySQL、Oracle 的 字符串拼接1、MySQL 的字符串拼接1.1 CONCAT(str1,str2,...) : 可以拼接多个字符串1.2 CONCAT_WS(separator,str1,str2,...) : 指定分隔符拼接多个字符串1.3 GROUP_CONCAT(expr) : 聚合函数&#xff0c;用于将多行的值连接成一个字符串。 2、Oracle 的字…

计算机网络(超详解!) 第二节 数据链路层(上)

1.数据链路层使用的信道 数据链路层使用的信道主要有以下两种类型&#xff1a; 1.点对点信道&#xff1a;这种信道使用一对一的点对点通信方式。 2.广播信道&#xff1a;这种信道使用一对多的广播通信方式&#xff0c;因此过程比较复杂。广播信道上连接的主机很多&#xff0…