Backend - 数据分析 matplotlib

目录

一、作用

二、安装环境

(一)虚拟环境终端

(二)代码导入库

(三)设置中文

1. 使用window自带(推荐)

2. 下载字体

三、应用

(一)基础知识

1. plt.plot()

(1)折线图的画图样式

(2)设置颜色

(3)设置标记符号

(4)设置线型

2. plt.show()

3. plt.figure()

4. plt.title()

5. plt.xlabel() & plt.ylabel()

6. plt.tight_layout()

(二)多个子图

1. plt.subplots()

2. figure对象的add_subplots

3. figure对象的add_axes

4. 设置子图样式

(二)图形实例

1. 折线图 plot

(1)代码

(2)效果图

2. 条形图 bar

(1)代码

(2)效果图

3. 饼图 pie

(1)代码

(4)效果图

4. 折线图&条形图

(1)代码

(2)效果图


一、作用

        Matplotlib 是 Python 的绘图库。

二、安装环境

(一)虚拟环境终端

pip install matplotlib

(二)代码导入库

import matplotlib.pyplot as plt

(三)设置中文

        默认不支持中文。

1. 使用window自带(推荐)

import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')

2. 下载字体

        下载某字体文件并放在项目里。

        网址(任选一个字体):https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

        代码:

        每个有中文显示的地方,都需要设置fontproperties。

import matplotlib
zhfont = matplotlib.font_manager.FontProperties(fname="../项目名/应用app名/static/font/SourceHanSansSC-Regular.otf") 
plt.title("书籍出售情况", fontproperties=zhfont)  # 图表标题
plt.xlabel("出售书籍", fontproperties=zhfont)  # 横坐标轴标签
plt.legend(loc='upper left', prop=zhfont)  # 显示图例(一定要在plot的后面)
plt.xticks(list(books)[::3], rotation=45, fontproperties=zhfont) # 设置横坐标数据样式:[::3] 间隔3个显示一次;rotation 文字旋转度数;fontproperties设置中文字体

三、应用

(一)基础知识

1. plt.plot()

(1)折线图的画图样式
plt.plot(x轴数据, y轴数据, color='red', marker='o', linestyle='--', label='值标签') # 画图
plt.plot(x轴数据, y轴数据, 'g+', label='值标签') # 画图。其中g+表示color&marker
(2)设置颜色

        ① 'r'、'y'、'g'、'c'、'b'、'k'、'w'(红、黄、绿、青、蓝、黑、白)

        ② 'red'等全称

        ③ 十六进制或RGBA格式

(3)设置标记符号

        点'.'、圆圈'o'、三角'v'、方块's'、星'*'、六角形'h'、加号'+'、菱形'd'

(4)设置线型

        实线'-'、虚线'--'、虚点'-.'、点线':'

2. plt.show()

        显示画布

3. plt.figure()

        新建图形(画布)对象

fig = plt.figure(figsize=(5,3), facecolor='pink') # figsize设置画布宽高;facecolor设置背景色

4. plt.title()

        设置图表标题

plt.title("Matplotlib demo") # 图表标题

5. plt.xlabel() & plt.ylabel()

        设置坐标轴标签

plt.xlabel("出售书籍") # x轴标签
plt.ylabel("价格(¥)") # y轴标签

6. plt.tight_layout()

        处理标题遮挡

(二)多个子图

1. plt.subplots()

创建多个子图

fig,axes=plt.subplots(2,2) # 画布子图分区(2*2个区域)
ax1=axes[0,0] # 设置子图1在0,0的位置(其中,0,0表示从左往右,逐行排序的第1个位置)
ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 子图数据
ax2=axes[0,1] # 设置分区2在0,1的位置(其中,0,1表示从左往右,逐行排序的第2个位置)
ax2.plot([1,3,5,7,9], [-1,2,-3,4,-5]) # 子图数据
ax2.grid(color='g', linestyle='--', linewidth=1,alpha=0.3) # 子图样式
ax2.legend(prop={'size': 10})
plt.show()

2. figure对象的add_subplots

创建多个子图(固定行列)

fig = plt.figure(figsize=(5,3), facecolor='pink') # 创建图形对象。figsize设置画布宽高;facecolor设置背景色
ax1 = fig.add_subplot(2,2,1) # 第一个位置
ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 分区1数据
ax2 = fig.add_subplot(2,2,4) # 第四个位置
ax2.plot([1,2,3,4,5], [-1,-2,-3,-4,-5]) # 分区2数据
plt.show()

3. figure对象的add_axes

创建多个子图(百分比布局)

fig = plt.figure() # 创建图形对象
ax1=fig.add_subplot(1,2,2) # 设置主图1*2的第2个位置
ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 数据 
ax1.set_title('主图') # 标题
ax2 = fig.add_axes([0.64,0.68,0.1,0.1]) # 设置子图,add_axes中阵列含义:[距离左64%,距离底68%,宽10%,高10%]
ax2.plot([0.1,0.2,0.3,0.4,0.5], [0.1,0.2,0.3,0.4,0.5], 'r') # 数据
ax2.set_title('图中图') # 标题
plt.show()

4. 设置子图样式

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.set_title('Matplotlib demo') # 标题
ax1.set_xlabel('书籍') # 设置子图的x轴标签
ax1.set_ylabel('价格') # 设置子图的y轴标签
# ax1.set_xticks([1, 2, 3]) # 设置x轴刻度
ax1.set_yticks([0,20,40,60,80])  # 设置y轴刻度
# ax1.set_xlim(0,100) # 设置x轴取值范围
ax1.set_ylim(0,100) # 设置y轴取值范围
ax1.set_xticklabels(['科幻','教育','文学']) # 设置 x 轴刻度标签

(二)图形实例

1. 折线图 plot

(1)代码
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')
def get_data():
    books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # x轴的数据
    prices = [40,10,60,80] # y轴的数据
    actual_prices = [50,95,80,45] # y轴的数据
    plt.plot(books, prices, color='red', marker='o', linestyle='--', label='预售价') # 画图
    plt.plot(books, actual_prices, color='blue', marker='.', linestyle='solid', label='实际售价') # 画图
    plt.title("Matplotlib demo") # 图表标题
    plt.xlabel("出售书籍") # x轴轴标签
    plt.ylabel("价格(¥)") # y轴轴标签
    plt.ylim(20,100) # 控制Y轴的显示范围
    plt.legend(loc='upper left')  # 显示图例(一定要在plot的后面)
    plt.xticks(list(books)[::3], rotation=45) # 设置x轴刻度样式:[::3] 间隔3个显示一次;rotation 文字旋转度数;fontproperties设置中文字体
    plt.show()

if __name__ == "__main__":
    get_data()
(2)效果图

2. 条形图 bar

(1)代码
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')
def get_data():
    fig, ax = plt.subplots(figsize=(4,3), layout='constrained')
    books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # 横坐标的数据
    prices = [40,10,60,80] # 纵坐标的数据
    ax.set(ylim=(0, 90))
    ax.bar(books, prices)
    plt.show()
if __name__ == "__main__":
    get_data()
(2)效果图

3. 饼图 pie

(1)代码
pie_data = [10, 20, 30, 80]
colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.9, len(pie_data))) # 根据饼图数据设置渐变颜色
fig, ax = plt.subplots()
labels = ['科幻', '科学', '文学', '教育']
wedges, texts, autotexts = ax.pie(pie_data, # 饼图数据
                                colors=colors, # 饼图渐变色
                                radius=3, # 饼图半径
                                center=(4, 4), # 饼图的圆中心位置
                                wedgeprops={"linewidth": 1, "edgecolor": "white"}, # 分块边界线样式
                                frame=True, # 显示坐标轴
                                textprops=dict(color='r'), # 文本颜色
                                labels=labels, # 显示每块标题标签
                                autopct='%.2f%%', # 展示每块百分比值;若要用autopct属性,则pie()方法回传的变量有三个
                                shadow=True, # 显示阴影
                                startangle=30 # 分块起始角度(x轴正向计算度数,逆时针)
                            ) 
ax.set(xlim=(0, 8), xticks=np.arange(1, 8), # 设置x轴的刻度范围
        ylim=(0, 8), yticks=np.arange(1, 8)) # 设置y轴的刻度范围
ax.legend(wedges, # 图例的标签颜色
            labels, # 图例的标签数据
            title="demo", # 图例标题
            loc="center left",
            bbox_to_anchor=(1, 0.5, 0, 0) # (x, y, width, height)
            ) # 图例
plt.show()
(4)效果图


4. 折线图&条形图

(1)代码
books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # x轴的数据
prices = [40,10,60,80] # y轴的数据
actual_prices = [50,95,80,45] # y轴的数据
plt.plot(books, prices, color='red', marker='o', linestyle='--', label='预售价') # 折线图
plt.bar(books, actual_prices, color='blue', label='实际售价') # 条形图
plt.title("Matplotlib demo") # 图表标题
plt.xlabel("出售书籍") # x轴轴标签
plt.ylabel("价格(¥)") # y轴轴标签
plt.ylim(0,100) # 控制Y轴的显示范围
plt.legend(loc='upper left')  # 显示图例(一定要在plot的后面)
plt.xticks(list(books)[::1], rotation=0) # 设置x轴刻度样式:[::1] 间隔1个显示一次;rotation 文字旋转度数;fontproperties设置中文字体
plt.show()
(2)效果图

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

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

相关文章

Spring Cloud Alibaba-07-RocketMQ消息驱动

Lison <dreamlison163.com>, v1.0.0, 2024.4.20 Spring Cloud Alibaba-07-RocketMQ消息驱动 文章目录 Spring Cloud Alibaba-07-RocketMQ消息驱动MQ简介MQ的应用场景常见的MQ产品RocketeMQ的架构及概念 RocketMQ入门RocketMQ环境搭建 SpringBoot 集成 RocketMQ MQ简介 …

汐鹤Key码查询,网站授权系统源码

汐鹤Key码查询和网站授权系统源码主要用于特殊虚拟物品销售商家。 下 载 地 址 &#xff1a; runruncode.com/php/19770.html 附带插件功能&#xff08;网站授权&#xff09;&#xff0c;但目前开发内容较少&#xff0c;请谅解&#xff01;同时&#xff0c;代码优化空间很大…

【论文极速读】 LLava: 指令跟随的多模态大语言模型

【论文极速读】 LLava: 指令跟随的多模态大语言模型 FesianXu 20240331 at Tencent WeChat Search Team 前言 如何将已预训练好的大规模语言模型&#xff08;LLM&#xff09;和多模态模型&#xff08;如CLIP&#xff09;进行融合&#xff0c;形成一个多模态大语言模型&#xf…

Ubuntu环境|FileNotFoundError: [Errno 2] No such file or directory: ‘soundstretch‘

一 问题描述 二 问题解决 使用ubuntu命令安装soundstretch&#xff08;How To Install soundstretch on Ubuntu 20.04 | Installati.one&#xff09; sudo apt -y install soundstretch 安装完成&#xff0c;问题解决。

yolov8实战第九天——pyqt5-yolov8实现道路病害识别系统(参考论文(6000+字)+环境配置+完整部署代码+代码使用说明+训练好的模型+数据集)

基于 pyqt5-yolov8实现道路病害识别系统,包括图片、批量图片、视频、视频流的道路病害识别。包括病害历史记录栏显示,训练好的模型和数据集,可直接进行工程应用和论文书写。 效果展示(图片检测,检测到的内容添加到历史记录): 效果展示(批量图片检测,检测到的内容添加…

pod install 报错 ‘SDK does not contain ‘libarclite‘ at the path...‘

报错内容&#xff1a; SDK does not contain ‘libarclite’ at the path ‘/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a’; 这是报错已经很明确告诉我们&#xff0c;Xcode默认的工具链中缺少一个工具…

Android-自定义三角形评分控件

效果图 序言 在移动应用开发中&#xff0c;显示数据的方式多种多样&#xff0c;直观的图形展示常常能带给用户更好的体验。本文将介绍如何使用Flutter创建一个自定义三角形纬度评分控件&#xff0c;该控件可以通过动画展示评分的变化&#xff0c;让应用界面更加生动。 实现思…

前端项目使用docker编译发版和gitlab-cicd发版方式

项目目录 app/ ├── container/ │ ├── init.sh │ ├── nginx.conf.template ├── src/ ├── .gitlab-ci.yml └── deploy.sh └── Dockerfile └── Makefilecontainer目录是放nginx的配置文件&#xff0c;给nginx镜像使用 .gitlab-ci.yml和Makefile是c…

【工具使用】搜狗输入法如何输入希腊字母等特殊字符

步骤&#xff1a; 1&#xff0c;点击悬浮框的输入方式&#xff0c;选择“符号大全”&#xff1a; 2&#xff0c;根据自己需要选择对应的符号即可&#xff1a;

QT7_视频知识点笔记_4_文件操作,Socket通信:TCP/UDP

1.事件分发器&#xff0c;事件过滤器&#xff08;重要程度&#xff1a;一般&#xff09; event函数 2.文件操作&#xff08;QFile&#xff09; 实现功能&#xff1a;点击按钮&#xff0c;弹出对话框&#xff0c;并且用文件类读取出内容输出显示在控件上。 #include <QFi…

第八课,分支语句嵌套、随机数函数、初识while循环

一&#xff0c;分支结构的嵌套语法 在 Python 中&#xff0c;分支结构可以嵌套&#xff0c;这意味着你可以在一个条件语句中包含另一个条件语句。嵌套的分支结构可以让你更灵活地控制程序的逻辑流程。 怎么理解呢&#xff1f;打个比方&#xff1a;放学后&#xff0c;请三年级…

深度学习之基于Tensorflow卷积神经网络(CNN)实现猫狗识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 在人工智能和深度学习的热潮中&#xff0c;图像识别是一个备受关注的领域。猫狗识别作为图像识…

AcWing 217:绿豆蛙的归宿 ← 搜索算法

【题目来源】https://www.acwing.com/problem/content/219/【题目描述】 给出一个有向无环的连通图&#xff0c;起点为 1&#xff0c;终点为 N&#xff0c;每条边都有一个长度。 数据保证从起点出发能够到达图中所有的点&#xff0c;图中所有的点也都能够到达终点。 绿豆蛙从起…

DDR5—新手入门学习(一)【1-5】

目录 1、DDR背景 &#xff08;1&#xff09;SDR SDRAM时代 &#xff1a; &#xff08;2&#xff09;DDR SDRAM的创新 &#xff1a; &#xff08;3&#xff09;DDR技术的演进 &#xff1a; &#xff08;4&#xff09;需求推动&#xff1a; 2、了解内存 &#xff08;1&…

k8s笔记 | Prometheus安装

kube-prometheus 基于github安装 选择对应的版本 这里选择 https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11 下载修改为国内镜像源 image: quay.io 改为 quay.mirrors.ustc.edu.cn image: k8s.gcr.io 改为 lank8s.cn 创建 prometheus-ingres…

教师专属的成绩发布小程序

还在为成绩发布而烦恼&#xff1f;还在担心家长无法及时获得孩子的学习反馈&#xff1f;是否想要一个既安全又高效的工具来简化你的教学工作&#xff1f;那么&#xff0c;易查分小程序可能是你一直在寻找的答案。 现在的老师们有了超多的工具来帮助我们减轻负担&#xff0c;提高…

Harmony学习笔记一——项目创建及配置

文章基于Harmony Next Preview2 进行学习&#xff0c;其他版本可能会稍有不同 准备工作 由于目前Harmony Next仅有Preview版本&#xff0c;想要进行Harmony Next开发需要向华为申请权限&#xff0c;具体操作参考: https://developer.huawei.com/consumer/cn/forum/topic/02081…

YOLOV8 如何训练自己的数据

1、git code 项目 地址 2、数据标注&#xff1a;使用yolov8官方推荐的roboflow 地址 2.1 上传数据 2.2 标注 2.3 生成数据集 2.4 导出数据 3 训练 3.1 建.yaml 文件 建立.yaml 文件 3.2 修改.yaml文件里面的内容 1.这是roboflow 网站下下来的数据&#xff0c;只需要把.…

常见算法(2)

1.冒泡排序 定义&#xff1a;相邻的数据两两比较&#xff0c;小的放前面&#xff0c;大的放后面。 public class test {public static void main(String [] arg) {int [] arr {2,4,5,3,6,1};//冒泡排序&#xff0c;排序次数arr.length-1for(int i0;i<arr.length-1;i) {f…

Blazor入门-简单svg绘制+导出图像

参考&#xff1a; SVG 教程 | 菜鸟教程 https://www.runoob.com/svg/svg-tutorial.html 本地环境&#xff1a;win10, visual studio 2022 community 注意&#xff1a;本文只给出思路和框架&#xff0c;对于具体的计算细节&#xff0c;考虑到日后会写入软件著作权和专利文书&am…