当前位置: 首页 > 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.mrgr.cn/news/26866.html

相关文章:

  • 队列OJ题——设计循环队列
  • 如何使用ssm实现物流配送人员车辆调度管理系统的设计与实现+vue
  • Linux 生成 git ssh 公钥
  • VBA语言専攻T3学员领取资料通知0915
  • 特邀文章┆大学录取专业不理想,怎么办?
  • 升级Ubuntu内核的几种方法
  • 项目需求 | MySQL增量备份与恢复的完整操作指南
  • 鸿蒙 父页面调用子组件页面中的方法
  • 网络安全宣传周的时间,举办活动的方式和意义
  • 【C语言】(指针系列3)数组指针+函数指针+typedef+函数数组指针+转移表
  • java 多线程中 一些需要注意的知识点
  • 【第34章】Spring Cloud之SkyWalking分布式日志
  • W外链怎么做微信推广链接?
  • 【C++二分查找】2560. 打家劫舍 IV
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
  • Superset二次开发之服务器环境准备
  • HJ69 矩阵乘法
  • Transformer学习记录(6):Vision Transformer
  • DockerDocker Compose安装(离线+在线)
  • yolov8学习笔记