使用Python库Matplotlib绘制常用图表类型

使用Python库Matplotlib绘图

  • 一、Matplotlib绘图参数设置
    • 1.1 设置分辨率和画布大小
    • 1.2 保存图片并设置边缘留白为紧凑型
    • 1.3 设置坐标轴标签
    • 1.4 画直线设置线宽和颜色
    • 1.5 画子图
      • 1.5.1 通过figure的add_subplot()画子图
      • 1.5.2 通过plt的subplots画子图
  • 二、使用Matplotlib中scatter()方法画散点图
    • 2.1 散点图添加图例和点标签
    • 2.2 结合sklearn中make_blobs()方法绘制二分类数据
  • 三、箱线图
  • 四、双数轴折线图

一、Matplotlib绘图参数设置

1.1 设置分辨率和画布大小

# 分辨率参数-dpi,画布大小参数-figsize
plt.figure(dpi=300,figsize=(24,8))

1.2 保存图片并设置边缘留白为紧凑型

plt.savefig("accuracy.svg", bbox_inches="tight")

1.3 设置坐标轴标签

plt.xlabel("tree_num")
plt.ylabel("accuracy")

1.4 画直线设置线宽和颜色

plt.plot(accuracy, color="b", linewidth="1.6")

1.5 画子图

1.5.1 通过figure的add_subplot()画子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
fig=plt.figure()
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

1.5.2 通过plt的subplots画子图

fig, ax = plt.subplots(2, 2,figsize=(10,8))
# 画第1个图:折线图
x = np.arange(1, 100)
ax[0][0].plot(x, x * x)
# 画第2个图:散点图
ax[0][1].scatter(np.arange(0, 10), np.random.rand(10))
# 画第3个图:饼图
ax[1][0].pie(x=[15, 30, 45, 10], labels=list('ABCD'), autopct='%.0f', explode=[0, 0.05, 0, 0])
# 画第4个图:条形图
ax[1][1].bar([20, 10, 30, 25, 15], [25, 15, 35, 30, 20], color='b')
plt.show()

二、使用Matplotlib中scatter()方法画散点图

scatter()方法关键参数:

matplotlib.pyplot.scatter(
    x,  # 散点的坐标
    y,
    s=None, # 散点的面积
    c=None, # 散点的颜色
    marker=None, # 散点样式,默认值为实心圆,'o'
    cmap=None, 
    norm=None,
    vmin=None,
    vmax=None,
    alpha=None, # 散点透明度,[0, 1]之间的数,0表示完全透明,1则表示完全不透明
    linewidths=None, # 散点的边缘线宽
    verts=None,
    edgecolors=None, # 散点的边缘颜色
    hold=None,
    data=None,
    **kwargs,
)

2.1 散点图添加图例和点标签

src_in_graph, tgt_in_graph = self.get_valid_source_and_target_list(source_list, target_list)
Xs, Ys = [], []
Xt, Yt = [], []
for s,t in zip(src_in_graph, tgt_in_graph):
    sx, sy = self.node_dict[s].coord
    tx, ty = self.node_dict[t].coord
    Xs.append(sx)
    Ys.append(sy)
    Xt.append(tx)
    Yt.append(ty)
plt.scatter(Xs, Ys, c='r', label='source')
for i in range(len(src_in_graph)):
    plt.text(Xs[i], Ys[i], src_in_graph[i])
plt.scatter(Xt, Yt, c='b', label='target')
for i in range(len(src_in_graph)):
    plt.text(Xt[i], Yt[i], src_in_graph[i])
plt.legend()
plt.savefig('src-tgt coord.svg', bbox_inches="tight")

2.2 结合sklearn中make_blobs()方法绘制二分类数据

import matplotlib.pyplot as plt
from sklearn import datasets

X, y = datasets.make_blobs(
    n_samples=150, n_features=2, centers=2, cluster_std=2.05, random_state=47
)
y = np.where(y == 0, 0, 1)  # 将标签转换为0和1
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

三、箱线图

箱线图(Box plot),也称为盒须图,是一种用于显示数据分布的统计图表。它通过显示数据的五个统计量(最小值、第一四分位数、中位数、第三四分位数和最大值)来概括数据的分布情况。箱线图在以下情况下特别有用:

  • 显示数据分布情况:箱线图提供了对数据分布的直观概览,包括数据的集中趋势、分散程度和对称性。
  • 识别异常值:箱线图通过“须”的长度和离群点(异常值)显示数据中的异常值或极端值。
  • 比较不同组的数据:箱线图可以并排显示多个数据集,方便比较不同组的分布情况。

箱线图应用场景:

  • 探索性数据分析(EDA):在数据分析的初始阶段,使用箱线图可以帮助快速了解数据的基本特征。
  • 比较多个数据集:当需要比较多个数据集的分布情况时,箱线图非常有用。例如,比较不同实验组或不同时间段的数据。
  • 检测数据异常值:箱线图可以帮助识别数据中的异常值,进而决定是否需要处理这些异常值。
  • 可视化报告:在报告和展示数据时,箱线图提供了一个简洁、直观的方式来展示数据的分布情况。

在画箱型图过程中,如图像未显示,是因为数据中存在空值。

四、双数轴折线图

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

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

相关文章

Geek Uninstaller丨轻盈免费无需安装,Win超强卸载工具

以前卸载软件用习惯了uninstall tool,今天试了一下geek,对比一下还是geek卸载软件更轻盈一点,没有太多冗杂的步骤。 Geek Uninstaller 是一款轻量级的软件卸载工具,它可以帮助用户彻底删除电脑上的软件,包括那些顽固的…

【因果推断python】8_线性回归模型2

目录 回归理论 非随机数据的回归 回归理论 我不打算深入研究线性回归是如何构建和估计的。然而,一点点理论将有助于解释它在因果推断中的力量。首先,回归解决了理论上的最佳线性预测问题。令 是一个参数向量: 线性回归找到最小化均方误差 (…

JavaScript倍速播放视频

F12打开开发者工具,打开控制台,输入这行代码,视频即可加速播放, 可以调整倍速(2,4,8,16) document. getElementsByTagName("video")[0]. playbackRate16

单片机建立自己的库文件(1)

文章目录 前言一、代码模块化是什么&#xff1f;二、使用步骤1.以LCD1602作为例子2.将LCD1602 相关的代码抽取到另外一个文件中 三、调用LCD1602.h1.新建一个工程项目&#xff0c;将LCD1602.h添加到工程中2.在主函数上加入 #include <LCD1602.h> 总结 前言 提示&#xf…

MACOS安装 vue 抱错解决方法npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR!

问题 在使用脚手架 vue-cli 创建 vue 工程的时候存在权限不足的情况下&#xff0c;报错&#xff1b; npm error code EACCES npm error syscall open npm error path /Users/ npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR! 解决方案&#xff1a; sudo npm cache cl…

Go跨平台编译

1.编译windows平台运行程序 # windows env GOOSwindows GOARCHamd64 go build main.go2.编译linux平台运行程序 # linux env GOOSlinux GOARCHamd64 go build main.go 3.编译macos平台运行程序 # macos env GOOSdarwin GOARCHamd64 go build main.go 编译结果:

VQAScore开启文本到视觉生成评估新篇章

随着生成式人工智能技术的飞速发展&#xff0c;如何全面评估生成内容的质量和与输入提示的一致性成为了一个挑战。在图像-文本对齐领域&#xff0c;传统的评估方法如CLIPScore存在局限性&#xff0c;尤其是在处理涉及多个对象、属性和关系的复杂提示时。它们通常基于简单的词袋…

Linux域名解析不了/网络不可达/虚拟机连接不了的问题

记录域名解析不了/网络不可达/虚拟机连接不了的问题问题 目录 文章目录 记录域名解析不了/网络不可达/虚拟机连接不了的问题问题1.首先确定已经连接上路由器(我的就是在这嗝屁了....)1.1 查看路由表1.2查看当前的网络连接状态&#xff0c;包括网关1.3查看网络接口的状态&…

机器学习笔记 - PyTorch 分布式训练概览

一、简述 对于大规模的数据集,只能进行分布式训练,分布式训练会尽可能的利用我们的算力,使模型训练更加高效。PyTorch提供了Data Parallel包,它可以实现单机、多GPU并行。 PyTorch 数据并行模块的内部工作原理 上面的图像说明了PyTorch 如何在单个系统中利用多个 G…

jmeter多用户登录并退出教程

有时候为了模拟更真实的场景&#xff0c;在项目中需要多用户登录并退出操作&#xff0c;大致参考如下 多用户登录前面已经实现&#xff1a;参考博文 多用户登录并退出jmx文件&#xff1a;百度网盘 提取码&#xff1a;0000 一、多用户退出操作 添加一个setUp线程组&#xff0…

pcdn如何规避运营商查封线路

在使用PCDN&#xff08;Private Content Delivery Network&#xff09;时&#xff0c;为了规避运营商查封线路&#xff0c;可以采取以下措施&#xff1a; 基于成本和宽带的调度&#xff1a;从CDN厂商的角度出发&#xff0c;考虑在不同业务量的地区进行调度&#xff0c;以减少在…

C#WPF数字大屏项目实战05--人员绩效展示

1、创建人员绩效实体类 2、定义视图模型中的属性 3、创建数据转换器 运行效果就是这样 4、绘制刻度 5、运行效果 6、小结 第1行StackPanel控件&#xff0c;里面放border和textblock 第2行ItemsControl控件&#xff0c;里面的ItemsSource绑定视图模型中的WorkerCompareList 第…

如何让数据标注

1.用Anacoda创建一个新的虚拟环境 2.进入虚拟环境 conda activate stu_data&#xff08;就是刚才创建的虚拟变量的名称&#xff09; 3.在此环境中安装labelimg pip install labelimg 4.进入labelimg 直接输入 labelimg 快捷键&#xff1a;D&#xff1a;下一个图片 A&#xff1a…

基于单片机的微型太阳能电站低功耗系统设计

摘 要 : 综合设计性实验是提高单片机类实验课程教学质量行之有效的手段 。 将实验课程内容结合社会热点问题而设计的实验教学案例&#xff0c;融合了单片机实验的所有知识点&#xff0c;提高了学生对实验课程的学习热情&#xff0c;激发了学生对实践教学的兴趣。 让学生通过对一…

java mybatis处理大数据量,开启和配置二级缓存,及注意事项,已解决

注意事项&#xff1a; 尽量避免使用下面方式写sql否则会降低服务器性能&#xff1a; mybatis二级缓存开启后&#xff0c;避免使用事务注解&#xff08;加上事务注解后二级缓存数据会导致两次访问不一致问题&#xff09;&#xff1a; 3. 返回的对象实体类&#xff0c;要实现Se…

FreeRTOS基础(三):动态创建任务

上一篇博客&#xff0c;我们讲解了FreeRTOS中&#xff0c;我们讲解了创建任务和删除任务的API函数&#xff0c;那么这一讲&#xff0c;我们从实战出发&#xff0c;规范我们在FreeRTOS下的编码风格&#xff0c;掌握动态创建任务的编码风格&#xff0c;达到实战应用&#xff01; …

用贪心算法进行10进制整数转化为2进制数

十进制整数转二进制数用什么方法&#xff1f;网上一搜&#xff0c;大部分答案都是用短除法&#xff0c;也就是除2反向取余法。这种方法是最基本最常用的&#xff0c;但是计算步骤多&#xff0c;还容易出错&#xff0c;那么还有没有其他更好的方法吗&#xff1f; 一、短除反向取…

一键分割视频并生成M3U8格式:高效管理视频内容,畅享流畅播放新体验

视频内容已成为我们日常生活和工作中的重要组成部分。无论是个人分享生活点滴&#xff0c;还是企业宣传产品与服务&#xff0c;视频都以其直观、生动的形式&#xff0c;吸引着我们的眼球。然而&#xff0c;随着视频内容的不断增多&#xff0c;如何高效、便捷地管理这些视频&…

Java——String类

1.String常用方法 1.1三种常用构造方法 1. String s1"hello";2. String s2new String("world");3. char []str{h,e,l,l,o, ,w,o,r,l,d};String s3new String(str); 1.2String对象的比较 比较 对于内置类型来说&#xff0c;“”比较…

在Unity中配置Android项目以允许HTTP流量,解决AVPro在Android平台中无法播放http视频

解决方法快速通道&#xff1a;拉到底&#xff0c;看倒数第二张图 好记性不如烂笔头 最近在使用AVpro插件播放http视频&#xff0c;在Editor中一切正常&#xff0c;然而打包在Android平台下就播放不了 AVPro在Unity中的警告&#xff1a; 感觉只是个警告&#xff0c;没引起注意…