当前位置: 首页 > 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()看好了,别顺手写了!

http://www.lryc.cn/news/437769.html

相关文章:

  • MOS管和三极管有什么区别?
  • 医院多参数空气质量监控和压差监测系统简介@卓振思众
  • [项目实战]EOS多节点部署
  • setImmediate() vs setTimeout() 在 JavaScript 中的区别
  • 【Java文件操作】文件系统操作文件内容操作
  • 关于若依flowable的安装
  • 猜数字困难版(1-10000)
  • ASPICE术语表
  • Knife4j:打造优雅的SpringBoot API文档
  • 数学建模笔记—— 多目标规划
  • 【鸿蒙HarmonyOS NEXT】页面之间相互传递参数
  • SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃
  • 关于SAP标准委外(带料外协)采购订单信息
  • SpringBoot整合WebSocket实现消息推送或聊天功能示例
  • 使用 QEMU 模拟器运行 FreeRTOS 实时操作系统
  • Oracle EBS中AR模块的财务流程概览
  • Minitab 的直方图结果分析解释
  • AgentRE:用智能体框架提升知识图谱构建效果,重点是开源!
  • 力扣题解2390
  • 用Python获取PDF页面的大小、方向和旋转角度
  • 【即时通讯】轮询方式实现
  • Flock 明牌空投教程
  • 项目内部调用的远程接口开发
  • 影响IP代理池稳定性的因素有哪些?
  • 基于Prometheus和Grafana的现代服务器监控体系构建
  • 原生 input 中的 “type=file“ 上传文件
  • 【Unity新闻】Unity的产品命名变化
  • 《PostMan(一):配置全局令牌》
  • 如何理解Configurational entropy
  • H5端接入萤石监控