当前位置: 首页 > news >正文

yjs04——matplotlib的使用(多个坐标图)

 1.多个坐标图与一个图的折线对比

1.引入包;字体(同)

import matplotlib.pyplot as plt
import random
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


2.创建幕布

        2.1建立图层幕布

        一个图:plt.figure(figsize=(...,...),dpi=...)

        不同图层:

       my_fig, axes = plt.subplots(nrows=xx, ncols=xx, figsize=, dpi=...)
..................................................................................

        2.2数据准备(同)   

        x = range(1, 15)                                      #x坐标轴的刻度 
        x_label = ["10月{}日".format(i) for i in x] #x坐标的写法
        y = range(5,25)                                      #y坐标轴的刻度

        y_shanghai = [random.uniform(15, 20) for i in x] #折线的y值
        y_beijing = [random.uniform(10, 15) for i in x]
·······················································································································   

        2.3画折线

        一个图:plt.plot(x,y_shanghai,label="",color="..",linestyle....)

                      plt.plot(x,y_beijing,...color="",...)

        多个图:

    axes[i].plot(x, y_shanghai, label=..., color=...)
或  axes[i][j].plot(x, y_shanghai, label=....)
..................................................................................

        2.4画坐标

        一个图plt.xticks(x,x_label)

        两个图

        axes[i][j].set_xticks(x)axes[i][j].set_xticklabels(x_label,rotation=45)axes[i][j].set_yticks(y)  #这里就是一个一个的写,刻度和名称分开的,一个图里是用一个函数的参数位置区分,这里是不同函数分开传

        2.5添加其他信息

        一个图:plt.xlabel();

                    plt.ylabel();

                    plt.title()

   多个图: axes[i][j].set_xlabel("日期")axes[i][j].set_ylabel("温度")axes[i][j].set_title("上海15日内的天气变化")

···················································································································

        2.6添加图例(都要在画折线的时候加label)

        一个图:plt.legend(loc=0)

        多个图:

           axes[i][j].legend(loc=1)  #这里不是set_legend!看好了!

        2.7添加网格

        一个图:plt.grid(True,alpha=0.5)

        多个图:

           ax[i][j].grid(True,alpha=0.5)

..............................................................................................................................................

3.展示图像(同)

        plt.show()

                        

2.代码展示

# matplotlib 拆成不同坐标轴;拆到不同的图里
import matplotlib.pyplot as plt
import random
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 1.创建画布
# 在一个图里画创建画布 plt.figure(figsize=(80, 20), dpi=50)
m_fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(40, 60), dpi=90)# 准备数据(与原来一样)
x = range(1, 15)
y=range(5,25)
y_shanghai = [random.uniform(15, 20) for i in x]
y_beijing = [random.uniform(10, 15) for i in x]
x_label = ["10月{}日".format(i) for i in x]# 2.画图
# 添加折线
# plt.plot(x,y_shanghai);plt.plot(x,y_beijing)
ax[0][0].plot(x, y_shanghai, label="上海", color="b", linestyle="-")
ax[1][0].plot(x, y_beijing, label="北京", color="r", linestyle="--")# 添加坐标轴
# 一个图中建立坐标轴是 plt.xticks(x,x_label,....);plt.yticks()
ax[0][0].set_xticks(x)
ax[0][0].set_xticklabels(x_label,rotation=45)
ax[0][0].set_yticks(y)ax[1][0].set_xticks(x)
ax[1][0].set_xticklabels(x_label,rotation=45)
ax[1][0].set_yticks(y)# 添加其他信息
# plt.xlabel("时间");plt.ylabel("温度");plt.title("15日内温度变化")
ax[0][0].set_xlabel("日期")
ax[0][0].set_ylabel("温度")
ax[0][0].set_title("上海15日内的天气变化")ax[1][0].set_xlabel("日期")
ax[1][0].set_ylabel("温度")
ax[1][0].set_title("北京15日内的天气变化")# 添加图例
# plt.legend(loc=0)
ax[0][0].legend(loc=1)
ax[1][0].legend(loc=1)#添加网格
ax[0][0].grid(True,alpha=0.5)
ax[1][0].grid(True,alpha=0.5)# 3.展示
plt.show()


我的问题:

1.对于fig,axes=plt.subplots(nrows=,nlows=,...)不太理解

首先是fig,axes这两个是你的幕布和坐标轴“名字”,下面坐标轴会用axes[i][j]来指定

其次nrows是有几行,nlows是有多少列,如果只有两个坐标,那么下面在说坐标轴时用一维数组来描述即可,即axes[0]与axes[1],但是如果有四个的话,要用axes[0][0],axes[0][1]....来指明

2.画坐标的时候的传参问题

一个图的坐标可以参数不写,然后会给你自动带入相应的值,但是多个图时必须传参;如plt.yticks()这里就可以不穿,但是axes[0].set_yticks(y)这里就得穿,要不然报错

3.图例那里 不是set_legend()是axes[i].legend()看好了,别顺手写了!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索源代码防泄漏与模块化沙箱的秘密
  • 高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案
  • 房产销售系统开发:SpringBoot技术要点
  • 关于node安装的全局js库,提示‘not found’
  • 【北京迅为】《STM32MP157开发板使用手册》- 第三十章Cortex-M4通用定时器实验
  • IntelliJ IDE 插件开发 | (十二)自定义项目脚手架(上)
  • RabbitMQ 基础入门
  • 3DGS:3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文解读
  • Leetcode 移动零
  • OA项目值用户登入首页展示
  • docker镜像源更换
  • 华为云分布式缓存服务DCS 8月新特性发布
  • uniapp业务实现
  • 快速完成论文初稿写作的ChatGPT提示词分享
  • 前端三件套
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android组件 - 收藏集 - 掘金
  • Git初体验
  • js对象的深浅拷贝
  • Linux Process Manage
  • python 学习笔记 - Queue Pipes,进程间通讯
  • rc-form之最单纯情况
  • React+TypeScript入门
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 浮现式设计
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 经典排序算法及其 Java 实现
  • 前端代码风格自动化系列(二)之Commitlint
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 试着探索高并发下的系统架构面貌
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 在Mac OS X上安装 Ruby运行环境
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​如何使用QGIS制作三维建筑
  • # 达梦数据库知识点
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #传输# #传输数据判断#
  • #每天一道面试题# 什么是MySQL的回表查询
  • #微信小程序:微信小程序常见的配置传值
  • (1)svelte 教程:hello world
  • (C语言)字符分类函数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (solr系列:一)使用tomcat部署solr服务
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (排序详解之 堆排序)
  • (七)Java对象在Hibernate持久化层的状态
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)EOS中账户、钱包和密钥的关系
  • .NET Core Web APi类库如何内嵌运行?
  • .NET gRPC 和RESTful简单对比
  • .net 按比例显示图片的缩略图
  • .net 发送邮件