【人工智能概论】pyplot作图中文显示、逐点坐标显示、保存图像

news2024/11/18 17:28:47

【人工智能概论】pyplot作图中文显示、逐点标记、保存图像

文章目录

  • 【人工智能概论】pyplot作图中文显示、逐点标记、保存图像
  • 一. 简单的绘图
  • 二. 逐点坐标显示
  • 三. 中文显示
  • 四. 中文显示可能遇到的问题——缺少字体
    • 4.1 下载 SimHei.ttf
    • 4.2 复制 SimHei.ttf 到 Matplotlib 的 font/ttf 文件夹
    • 4.3 修改 Matplotlib 配置
    • 4.4 清空原有配置
    • 4.5 大功告成
  • 五. 保存图像
    • 5.1 保存单张图片
    • 5.2 保存多张图片


一. 简单的绘图

  • 代码:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)  # 用numpy生成x坐标点
y = x * x + x - 3
# 生成y坐标的值
plt.title("y = x^2 + x - 3")  # 设置标题
plt.xlabel("x")  # 设置x坐标标签
plt.ylabel("y")  # 设置y坐标标签
plt.plot(x, y)  # 绘图
plt.show()  # 显示图片
  • 效果图:
    在这里插入图片描述

二. 逐点坐标显示

  • 如果只有上面的那种干巴巴的图,可读性会很差,因此不妨将绘图的点,逐点进行坐标展示。
  • 代码:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)  # 用numpy生成x坐标点
y = x * x + x - 3
# 生成y坐标的值
plt.xlabel("x")  # 设置x坐标标签
plt.ylabel("y")  # 设置y坐标标签
plt.title("y = x^2 + x - 3")  # 设置标题
plt.plot(x, y, color='r', markerfacecolor='blue', marker='o')  # 绘图
for a, b in zip(x, y):  # 添加这个循环显示坐标
    plt.text(a, b, (a, b), ha='center', va='bottom', fontsize=10)
plt.show()  # 显示图片
  • 效果图:
    在这里插入图片描述

三. 中文显示

  • Matplotlib默认显示英文,如果不进行相关设定,妄图直接输出中文,收获的只能是一堆方块乱码。
  • 实际上只需要加两条语句即可实现中文显示,如下:
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
  • 代码:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)  # 用numpy生成x坐标点
y = x * x + x - 3
# 生成y坐标的值
plt.title("一元二次方程")  # 设置标题
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.xlabel("x")  # 设置x坐标标签
plt.ylabel("y")  # 设置y坐标标签
plt.plot(x, y, color='r', markerfacecolor='blue', marker='o')  # 绘图
for a, b in zip(x, y):  # 添加这个循环显示坐标
    plt.text(a, b, (a, b), ha='center', va='bottom', fontsize=10)
plt.show()  # 显示图片
  • 效果图:
    在这里插入图片描述

四. 中文显示可能遇到的问题——缺少字体

  • 在初次设定中文显示时,可能会遇到这样的问题:findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei,这说明Matplotlib缺少SimHei字体。
  • 这就需要我们下载SimHei.ttf ,并配置Matplotlib。

4.1 下载 SimHei.ttf

4.2 复制 SimHei.ttf 到 Matplotlib 的 font/ttf 文件夹

  • 执行以下代码:
import matplotlib
print(matplotlib.matplotlib_fname())
  • 会得到类似如下以 matplotlibrc 结尾的地址:

/home/用户名/anaconda3/envs/环境名/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc

  • 以此路径为基础,获得ttf文件的存放路径:

/home/用户名/anaconda3/envs/环境名/lib/python3.10/site-packages/matplotlib/mpl-data/font/ttf

  • 将下载好的ttf文件移动到此。

4.3 修改 Matplotlib 配置

  • 执行以下代码:
import matplotlib
print(matplotlib.matplotlib_fname())
  • 会得到类似如下以 matplotlibrc 结尾的地址,它就是Matplotlib的配置文件:

/home/用户名/anaconda3/envs/环境名/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc

  • 终端中输入以下指令,打开配置文件:
gedit /home/用户名/anaconda3/envs/环境名/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
  • 做以下三点修改

修改1:去掉 font.family 前的 # 号;
修改2:去掉 font.sans-serif 前的 # 号,并加入 SimHei ;
修改3:去掉 axes.unicode_minus 前的 # 号,并将其值修改为 False。

  • 修改前:
#font.family:  sans-serif
#font.serif:      DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
#axes.unicode_minus: True # use Unicode for the minus symbol rather than hyphen.  See
                           # https://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
  • 修改后:
font.family:  sans-serif
font.serif:      SimHei, DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
axes.unicode_minus: False # use Unicode for the minus symbol rather than hyphen.  See
                           # https://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes

4.4 清空原有配置

  • 执行以下指令,获得Matplotlib的缓存文件位置:
import matplotlib
print(matplotlib.get_cachedir())
  • 得到类似下面的结果:

/home/用户名/.cache/matplotlib

  • 终端执行以下指令,清除缓存文件
rm -r  /home/用户名/.cache/matplotlib

4.5 大功告成

  • 重启编辑器,执行代码:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)  # 用numpy生成x坐标点
y = x * x + x - 3
# 生成y坐标的值
plt.title("一元二次方程")  # 设置标题
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.xlabel("x")  # 设置x坐标标签
plt.ylabel("y")  # 设置y坐标标签
plt.plot(x, y, color='r', markerfacecolor='blue', marker='o')  # 绘图
for a, b in zip(x, y):  # 添加这个循环显示坐标
    plt.text(a, b, (a, b), ha='center', va='bottom', fontsize=10)
plt.show()  # 显示图片
  • 效果图:
    在这里插入图片描述
  • 果然神功大成。

五. 保存图像

5.1 保存单张图片

  • 只需添加以下指令:
plt.savefig('./image/pic.png')

5.2 保存多张图片

  • 生成不同图像的代码间,要额外添加一条语句,用于重置plt,以避免图像混叠:
plt.clf()
  • 代码举例:
plt.plot(loss, 'r')
plt.title("Loss")
plt.xlabel("epoch")
plt.ylabel("Loss")
plt.savefig("loss.png")  

plt.clf()  # 添加上这一行,画完第一个图后,将plt重置

plt.plot(acc, 'r')
plt.title("Accuracy")
plt.xlabel("epoch")
plt.ylabel("accuracy")
plt.savefig("accuracy.png") 

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

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

相关文章

好的Robots.txt设计对Google收录有很大的帮助

Robots.txt 文件是用于指导搜索引擎爬虫在网站上爬行的标准。正确地设计 Robots.txt 文件可以帮助 Google 爬虫更好地理解您的网站结构,从而提高您的网站在 Google 搜索引擎上的收录率。 以下是一些设计 Robots.txt 文件的技巧,可以帮助 Google 爬虫更好…

security 报错:There is no PasswordEncoder mapped for the id “null“

security在登录的时候 无法登录成功 首先解读错误 下面百度翻译 安全框架设置了登录验证 说你没有密码编辑器 解决方法 一: 往容器中注册一个PasswordEncoder 解决方法二: 设置用户权限和角色的时候添加方法,加进去一个PasswordEncoder 只需要解决方案的话 下面的内容…

K8S系列之污点和容忍度详细分析

架构图 本篇文档主要介绍污点和容忍度的关系。 污点和容忍度 污点顾名思义就是脏的东西,给节点添加污点来限制pod调度到该节点上,如果pod可以容忍这种污点就可以被调度到有污点的节点上,如果不能容忍就不能被调度到该节点上。 污点作用于节…

排队领奖模式吸引新消费者,电商平台如何创新引流拓客?

在当前的电商市场中,由于竞争日趋激烈,很多电商平台产生了引流拓客缺乏新意的难题,即很难找到新的流量,并且难以把这些流量转化为消费者。在这个瞬息万变的时代,当然是谁有创意谁能吸引消费者,谁才能当道。…

Sequence-to-Sequence Knowledge Graph Completion and Question Answering

[2203.10321] Sequence-to-Sequence Knowledge Graph Completion and Question Answering (arxiv.org) 目录 1 Abstract 2 Introduction 3 KGT5 Model 3.1 Textual Representations & Verbalization 3.2 Training KGT5 for Link Prediction 3.3 Link Prediction Inf…

Inception Network

文章目录 一、Inception Network简介二、CNN的痛点三、Inception Network1. 1x1卷积核1.1 升维/降维:1.2. 调节参数数量:1.3. 增加非线性特性: 2. Inception原始模型3. Inception Module4. Inception Network 四、代码示例 一、Inception Net…

接口自动化测试 vs. UI自动化测试:为什么前者更快,更省力,更稳定?

从入门到精通!企业级接口自动化测试实战,详细教学!(自学必备视频) 目录 前言: 一、什么是接口自动化测试和 UI 自动化测试 二、为什么接口自动化测试效率比 UI 自动化测试高 1.执行速度 2.维护成本 3.…

AI人工智能与机器人的探索和应用1.1

文章来源于:https://mp.weixin.qq.com/s/fqivYVdakVKG-zDVfD4Qzg 研究机器人和人工智能的技术已有多年了,想来想去,觉得还是有必要对过往的技术做一些凝练和总结。在此过程中,除了能够将知识系统化,构建自己的知识体系…

三次输错密码后,系统是怎么做到不让我继续尝试的?

故事背景 忘记密码这件事,相信绝大多数人都遇到过,输一次错一次,错到几次以上,就不允许你继续尝试了。 但当你尝试重置密码,又发现新密码不能和原密码重复: 相信此刻心情只能用一张图形容: 虽…

python二次加工标准类型 | 包装与授权

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

洽洽离年轻人更近了,陈先保离百亿KPI呢?

文|螳螂观察 作者|图霖 留给陈先保实现百亿营收的时间不多了。 过去几年,洽洽凭借着在产品端、市场端、供应端的绝对实力,守住了休闲零食行业龙头的地位。但最新发布的2023年第一季度业绩报告,却出现了6年来首次营收、净利双双下降。 报告…

Excel大数据量单元格快速填充

个人简介:一个从会计转行数据分析师的三旬老汉 擅长领域:数据分析、数据仓库、大数据 博客内容:平时会将自己工作中遇到的问题进行归纳总结,分享给各位小伙伴,意在帮助大家少加班、不掉发,让我们相互学习&a…

const/static修饰成员函数+初始化列表

一、const修饰成员函数 首先,我们知道,所有的成员函数(除static修饰的),编译器都会隐式传递一个this指针。 它的默认类型为 Type* const this,即this指针只能指向最左边的第一个传入的对象。 const修饰成…

Docker容器体系结构及特点

Docker容器体系结构及特点 Docker是一个应用容器引擎,通过Docker,管理员可以非常方便地对容器进行管理。Docker基于Go语言开发,并且遵从Apache 2.0开源协议。 Docker提供了对容器镜像的打包封装功能。利用Docker,开发者可以将他…

2023 最新版IntelliJ IDEA 2023.1创建Java Web 项目详细步骤(图文详解)

文章目录 🧭 版本情况JavaIDEATomcatmaven 🌏 创建步骤🚗 1、依次点击File >> New >> Project🚓 2、选择New Project 输入自己的项目名,选择JDK版本,而后点击create进行创建🚕 3、鼠…

开新能源汽车有充电焦虑吗?2022年国内充电桩数量已达521万台

哈喽大家好,新能源汽车的不断普及使充电桩市场快速发展起来,同时充电桩的技术正在不断改进,包括充电速度、安全性、互联网功能等多个方面。相比与日渐壮大的新能源汽车用户规模,充电桩的建设相对发展速度较慢,近几年来…

网络编程代码实例:守护进程版

文章目录 前言代码仓库内容目录结构代码结果总结参考资料作者的话 前言 网络编程代码实例:守护进程版。 代码仓库 yezhening/Environment-and-network-programming-examples: 环境和网络编程实例 (github.com)Environment-and-network-programming-examples: 环境…

XShell配置以及使用教程

目录 1、XShell介绍 2、安装XShell 1. 双击运行XShell安装文件,并点击“下一步” 2. 点击“我接受许可证协议中的条款”,点击“下一步” 3. 点击“浏览”更改默认安装路径,点击“下一步” 4. 直接点击“安装” 5. 安装完成&#xff0…

C语言小游戏的实现——三子棋

前言 Hello!友友们,前边我们已经学习了C语言的基础知识,但单纯的理论和简单的代码演示是无法真正做到巩固所学的知识的,那么今天我将会带领大家,根据之前所学的知识,来写一个三子棋小游戏。 目录 前言 总…

从C出发 31 --- 指针专题经典问题剖析

int a 0; int* p &a; //p作为指针指向了a, p 保存的是a 变量的内存地址,// p 这个指针本质是变量,这个变量有没有内存地址?// 有内存地址,为什么?// 因为它作为变量,肯定要占用内存空间的// p 这个变…