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

matplotlib入门

目录

一,matplotlib简介

二,使用plt.plot()绘制直线、曲线、折线

三,使用plt.title()设置标题

四,风格的设置

五,使用xlabel()和ylabel()设置坐标标签

六,使用plt.xtick()和plt.ytick()设置坐标值及图例显示

七,使用subplot()和subplots()进行画布分区


一,matplotlib简介

        Matplotlib是一个 Python 的 2D绘图库。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。常用做数据可视化。

        以面向对象的方法看待matplotlib画图会更加容易学会。如下图,比如boxplot作为的是图的标题,可看成是标题对象,具有字体大小、颜色、字体类型、位置等属性,他与他底层的画布通过一种方法进行定位。

二,使用plt.plot()绘制直线、曲线、折线

plt指的是from matplotlib import pyplot as plt,他是绘图模块,即.py文件。

        plt.plot()的原型如下:plot([x], y, [fmt], data=None, **kwargs),第一个和第二个参数是位置参数,必须是长度相同的数值容器类型,如:列表、ndarray、元组、Series()等。[x]表示该参数可以不传,默认为0,1,2,3……。y也就是纵坐标必须传(没有数据画不了图)。如[0,2],[1,4]就是对应的一组,作为二维画图,相当于x坐标的取值,y坐标的取值

        [fmt]为格式化参数,对线条对象的属性进行修改。例如:plot(x, y, 'bo-')  # 蓝色圆点实线;可见bo-就是各种线条属性取值的第一个字母。假如不熟悉的话,可以使用关键字参数进行传值被kwargs捕获,如:plot(x,y3,color='#900302',marker='+',linestyle='-')。

        也可以传递很多组数据,plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)。这样会在同一个画布上进行绘制,如:plt.plot([0,2],[1,4],[0,0],[1,5])。

import matplotlib.pyplot as plt
#将(0,1)点和(2,4)连起来
plt.plot([0,2],[1,4])
plt.show()

        plt.plot()的作用就是在(x,y)出进行画点成线,所以他的返回值是一个点聚成的线条对象。如果一个画布有多条线,返回值就有多个对象(line2d对象)。

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(-5*np.pi,5*np.pi,0.01)
y=np.sin(x)/x
a,= plt.plot(x,y) # a接收了线条对象,使用set方法进行属性设置
a.set(color='r', linewidth=2.0)
plt.show()

        效果图如下:这条红线就是线条对象,他位于底层画布之上,画布由plt.figure()生成。

三,使用plt.title()设置标题

        matplotlib并不直接支持中文,而是需要进行初始设置。

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.title('Numbers',fontsize=24)  #设置标题

        plt.title()返回的是matplotlib.text对象,可以使用set方法对其属性进行设置。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
x=[i for i in range(1,6)]
squares=[i*i for i in x]
plt.plot(x,squares,linewidth=3)
ti=plt.title(label='折线图')#'折线图',fontsize=24
ti.set(fontsize=24,color='r')
plt.xlabel('datas',fontsize=24)
plt.ylabel('squares',fontsize=24)
plt.show()

        效果图如下:

四,风格的设置

        设置代码如下:

import matplotlib.pyplot as plt
import numpy as np
#风格的设置
#查看有哪些风格
print(plt.style.available)
#设置风格
plt.style.use('ggplot')
x=np.linspace(-10,10)
plt.plot(x,np.sin(x))

五,使用xlabel()和ylabel()设置坐标标签

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
#设置图标标题,并在坐标轴上添加标签
plt.title('标题设置',fontsize=24)
plt.xlabel('x轴',fontsize=14)
plt.ylabel('y轴',fontsize=14)
plt.show()

        同样的,可以对返回的对象使用set方法进行属性设置。

六,使用plt.xtick()和plt.ytick()设置坐标值及图例显示

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.style.use('classic')
max_temperature = [26, 30, 31, 32, 33]
min_temperature = [12, 16, 16, 17, 18]
x = range(5)
plt.rcParams['font.family'] = ['SimHei']
x_ticks = ['星期{}'.format(i) for i in
range(1, 6)]
plt.title('某年某周第N周的温度')
plt.xlabel('周')
plt.ylabel('温度:单位(℃)')
# 设置x轴标签
plt.xticks(x, x_ticks)
# 填充数据
plt.plot(x, max_temperature, label='最高温')
plt.plot(x, min_temperature, label='最低温')
# 显示图例
plt.legend(loc=2)
plt.show()

        效果如图:

七,使用subplot()和subplots()进行画布分区

        画布分区指的是在一张画布上按照行和列分成各个分区每个分区可绘制不同的图。

plt.subplot(221)  #设置2行2列的分区,在从左往右数的第一个分区进行绘制
fig,ax=plt.subplots(nrows=2,ncols=2)
# subplotsO()函数返回一个画布fig,以及装有各个分区的容器ax,
# ax[0,0]表示第一个分区,ax[2,2]表示第二行第二列的分区

        实例代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
sin_y=np.sin(x)
fig,ax=plt.subplots(ncols=2,nrows=2)
ax[0,1].plot(x,sin_y,'3r')
plt.show() 

        效果图如下:

相关文章:

  • JavaScript设计模式——建造者模式
  • Roson的Qt之旅 #124 QNetworkConfigurationManager网络配置管理
  • 天池Python练习02-位运算
  • 国内主机整车EEA架构汇总
  • Java刷题面试系列习题(十三)
  • linux驱动35:工作队列
  • 句向量模型之SimCSE——Pytorch
  • 简单旅游景点HTML网页设计作品 DIV布局故宫介绍网页模板代码 DW家乡网站制作成品 web网页制作与实现
  • 图解redis(四)——高可用篇
  • LQ0048 交换瓶子【无标题】
  • 《SpringBoot篇》11.JPA常用注解只需一个表
  • 不想手敲代码?Jupyter Notebook 又一利器 Visual Python
  • 【mysql体系结构】InnoDB索引页结构
  • Roson的Qt之旅 #123 QNetworkConfigurationManager网络配置管理
  • 【数据结构与算法】ArrayList的模拟实现
  • 自己简单写的 事件订阅机制
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • gcc介绍及安装
  • JavaScript中的对象个人分享
  • Java基本数据类型之Number
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Redux系列x:源码分析
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • win10下安装mysql5.7
  • 百度地图API标注+时间轴组件
  • 初识 beanstalkd
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 听说你叫Java(二)–Servlet请求
  • Spring第一个helloWorld
  • 阿里云服务器购买完整流程
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #includecmath
  • (C语言)逆序输出字符串
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (SpringBoot)第二章:Spring创建和使用
  • (二)Linux——Linux常用指令
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)jQuery 基础
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 5种线程安全集合
  • .NET开源项目介绍及资源推荐:数据持久层
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired标签与 @Resource标签 的区别
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [2]十道算法题【Java实现】
  • [BZOJ2208][Jsoi2010]连通数