python绘图-matplotlib应用笔记

目录

    • figure/axis/axes/plt分别表示什么?
        • plt
        • Figure:可以解释为画布。
        • Axes 是图像中具有数据空间的区域
        • Axis 坐标轴
        • 总结
    • 图像元素说明
        • 中文解决问题
        • 绘图实例
      • 图像坐标轴调整
    • 参考文章

figure/axis/axes/plt分别表示什么?

在这里插入图片描述

matplot绘图的基础就是由上述图片中的元素所构成,我把他们理解为元素或者模块。画图就是一个一个小的元素组合在一起的结果。

plt

导入的matplotlib库的api使者,所有后续的操作都是从这个使者引入进来的。

Figure:可以解释为画布。

  • 也就是一切元素堆砌的基础。画图的第一步就是创建画布。

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num:图像编号或名称,数字为编号 ,字符串为名称
  • figsize:指定figure的宽和高,单位为英寸;
  • dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框
import matplotlib.pyplot as plt
创建自定义图像
fig=plt.figure(figsize=(4,3),facecolor='blue')
plt.show()

Axes 是图像中具有数据空间的区域

可以直接理解为对象、元素。 一个figure中可以包含多个 Axes,但一个给定的 Axes 对象只能在一个图形中。 Axes 包含两个(或在 3D 的情况下为三个)Axis 对象(注意 Axes 和 Axis 之间的区别),它们负责数据限制(数据限制也可以通过 set_xlim() 和 set_ylim 进行设置 () 轴方法)。 每个轴都有一个标题(通过 set_title() 设置)、一个 x 标签(通过 set_xlabel() 设置)和一个通过 set_ylabel() 设置的 y 标签。如果你的figure有subplot,那么每一个subplot就是一个axes。

Axis 坐标轴

每个坐标轴实际上也是由竖线和数字组成的,每一个竖线其实也是一个axis的subplot,因此ax.xaxis也存在axes这个对象。对这个axes进行编辑就会修改xaxis图像上的表现。

总结

1、Figure:画布,Axes的容器
2、Axes:图像有效区域。包含坐标轴以及图像
3、Axis:坐标轴
4、画图的时候plt函数或者axes面向对象绘图都可以。

图像元素说明

在这里插入图片描述

  • xlim,ylim指定坐标轴的取值范围,
  • title指定图的名称,
  • xlabel,ylabel设置坐标轴名字及其字体大小,支持Latex语法。
  • yscale对坐标轴刻度值的函数,有log等选项。
  • minorticks_on打开最小刻度线,
  • tick_params(which=‘minor’,direction=‘in’,width=2,length=4)控制主次刻度线的长度,宽度和朝向,
  • (top=‘off’,bottom=‘on’,left=‘on’,right=‘off’)设置主刻度线在上下左右四条边上是否显示,
  • tick_params(labeltop=‘off’,labelbottom=‘on’,labelleft=‘on’,labelright=‘off’)设置刻度值(ticklabel)在上下左右四条边上是否显示。
  • xtick([])关闭x轴坐标刻度,yticks([…1],[…2])设置刻度值名称,支持Latex语法。
  • axis(‘off’)关闭坐标轴显示。
  • grid打开网格线,ax.xaxis.grid()打开x轴的网格线,并设置格式。alpha是透明度,值越大透明度越,越不透明。
  • ax.axes.get_yaxis().set_visible(False)设置坐标轴是上的刻度不可见,但轴仍在。
  • ax.xaxis.set_ticks_position(‘top’)设置x轴的刻度是位于哪一条边上,一般选top或者bottom,ax.spines设置上下左右四条边的颜色、线型、位置等,a
  • x.xaxis.set_major_locator等,设置坐标轴主次刻度值的分辨率
  • tick.label1.set_fontsize(15)设置刻度值字体大小。

调整子图之间的相对位置

plt.subplots_adjust(top=0.92, bottom=0.12, left=0.12, right=0.95, hspace=0.25,wspace=0.35)

中文解决问题

程序中引入

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False

如果引入以后运行还是出现问题,那就需要下载这个文件的tff文件。并放在指定目录下

yourpath\site-packages\matplotlib\mpl-data\fout\

绘图实例

#!/usr/bin/env python
# coding:utf-8from email import header
import imp
from re import X
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from datahandler.dataprovider import DataProvider
from datahandler.gtifwriter import GTifWriter
from matplotlib.pyplot import MultipleLocator, title
from matplotlib import font_manager
import os
import datetime
# 用来显示中文标签
zhfont1 = font_manager.FontProperties(fname=os.path.join(os.path.dirname(os.path.abspath(__file__)),'font/simhei.ttf'))plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来显示负号
plt.rcParams['axes.unicode_minus'] = False
# 调整生成的图表最大尺寸
plt.rcParams['figure.figsize'] = (15.0, 12.0)
plt.rcParams['figure.dpi'] = 100
plt.rc('font',family='Times New Roman')
subFontsize = 18
subTitleFontsize = 26
def draw(time,exceldata,hdfdata,title,outfile):#front是标签属性:包括字体、大小等font = {'family' : 'Times New Roman','weight' : 'normal','size'   : 18,}x = time[:-1]fig,ax=plt.subplots(1,2) # 绘制横向两个图plt.suptitle(title,fontproperties=zhfont1,fontsize=subTitleFontsize)# 设置主标题for i,key in enumerate(exceldata.keys()):y1 = exceldata[key][:-1]y2 = hdfdata[:,i]plt.subplot(121) # 横向第一个plt.plot(x,y1,linewidth=0.5, color="red",label="{} csv value".format(key))plt.subplot(122) #横向第二个plt.plot(x,y2,linewidth=0.5, color="blue",label="{} hdf value".format(key))print(key)x_major_locator=MultipleLocator(25)#横坐标以每25显示y_major_locator=MultipleLocator(100)#纵坐标以每100显示subtitle = ['CSV文件','HDF文件']for i in range(len(ax)):’‘’给每一个子图添加坐标轴和标题‘’‘plt.subplot(1,2,i+1) # 编辑第i+1个图ax[i].xaxis.set_major_locator(x_major_locator) # 等间距坐标标注ax[i].yaxis.set_major_locator(y_major_locator)ax[i].set_xlabel("UTC时间", fontsize=subFontsize,fontproperties=zhfont1) #设置坐标轴,中文显示ax[i].set_ylabel("Value", fontsize=subFontsize,fontdict=font)plt.title(subtitle[i],fontproperties=zhfont1,fontsize=subTitleFontsize)plt.xticks(rotation = 45) # X坐标轴标注角度偏移plt.legend(loc = 'upper right',prop = {'size':12},ncol = 2 ) # ncol 表示图例的列数plt.xticks(fontsize = subFontsize)plt.yticks(fontsize = subFontsize)plt.tight_layout() # 自动调整图片的大小以适应于画布plt.savefig(outfile)

结果展示:
在这里插入图片描述

图像坐标轴调整

实验例子需求说明
该图示要求横坐标时间跨度为3天,实时更新数据,纵坐标轴要求表示为科学计数法,并标注横向分割线和纵向边界线。

def draw(x,hdfdata,subtitles,outfile,title,legend,colors,stime = '',etime = '',ymin=10**-4, ymax=10**1,threshold=10**3,yaxis='count/cm**2*KeV*s*sr'):#front是标签属性:包括字体、大小等font = {'family' : 'Times New Roman','weight' : 'normal','size'   : 14,}fig, ax = plt.subplots()plt.title(title, fontsize='36', fontweight='heavy', pad=42,fontproperties=zhfont1)ax.text(1,1,subtitles[0],horizontalalignment='right',verticalalignment='bottom',transform=ax.transAxes,fontproperties=zhfont1,fontsize=subTitleFontsize)ax.text(0.5,1,subtitles[1],horizontalalignment='center',verticalalignment='bottom',transform=ax.transAxes,fontproperties=zhfont1,fontsize=subTitleFontsize)ax.text(0,1,subtitles[2],horizontalalignment='left',verticalalignment='bottom',transform=ax.transAxes,fontproperties=zhfont1,fontsize=subTitleFontsize)x = pd.to_datetime(x) # 将字符串转为时间格式for i in range((hdfdata.shape[1])):y2 = hdfdata[:,i]ax.semilogy(x,y2,linewidth=1, color=colors[i],label="{}".format(legend[i])) # 纵坐标轴为10的N次幂# 设置完整的一整天或者三天的时间刻度,指定横轴时间跨度lims=[np.datetime64(stime), np.datetime64(etime)]ax.set_xlim(lims)ax.xaxis.set_major_locator(MultipleLocator(0.25))  # 设置x轴标签间隔ax.set_xlabel("UTC时间", fontsize=subFontsize,fontproperties=zhfont1)ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d %H:%M'))#设置时间标签显示格式ax.set_ylabel(yaxis, fontsize=subFontsize,fontdict=font)#以10的幂次方进行表示ax.set_ylim(ymin, ymax)ax.set_yscale('log')ax.tick_params(which='minor',length=0) # 设置刻度plt.legend(loc = 'upper right',prop = {'size':12},ncol = 2)plt.xticks(fontsize = subTitleFontsize)plt.yticks(fontsize = subTitleFontsize)plt.axhline(y=threshold, color='r', linestyle='dashdot',linewidth=1) # 绘制水平线 此处为y=10plt.tight_layout()print('=========================')plt.savefig(outfile)plt.close()

在这里插入图片描述

参考文章

plt与Axes绘图对比
边框线及坐标轴的设置
绘图布局
官方案例
官方API

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python绘图(模板)

目录 2D绘图 折线图 条形图 直方图 散点图 饼图 堆积条形图 ​编辑 对称条形图 3D绘图 3D散点图 3D条形图 附录: 颜色表color 图标marker" " 固定代码模版 2D绘图 折线图 import matplotlib.pyplot as plt #上一行代码也可替换为 i…

【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现

利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用。 如下图,有一个供用户自己任意画图、涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细。 实质上这里的橡皮擦就是白色的画笔,根…

Python画图matplotlib库的使用scatter(),plot()方法教学实例

Python画图主要用到matplotlib这个库。scatter和 plot 函数最常用 这个函数几乎可以调节图的一切属性,包括但不限于:坐标范围,axes标签字号大小,xtick,ytick标签字号,图线宽,legend字号等。 具体参数参看官…

绘图神器draw.io(写文必备)

绘图神器draw.io(写文必备) 前言 大家早上好,我是毛小悠,一个前端开发工程师。 最近发现一个绘图神器,没错,就是标题中的draw.io。免费、开源,功能强大,真的非常适合程序员。 我…

基于Attention的机器翻译模型,论文笔记

论文题目:Neural Machine Translation by Jointly Learning to Align and Translate 论文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf GIF来源:https://jalammar.github.io/visualizing-neural-m…

Transformer(四)--实现验证:transformer 机器翻译实践

转载请注明出处:https://blog.csdn.net/nocml/article/details/125711025 本系列传送门: Transformer(一)–论文翻译:Attention Is All You Need 中文版 Transformer(二)–论文理解:transformer 结构详解 Transformer(三)–论文实…

机器翻译之Facebook的CNN与Google的Attention

传统的seq2seqfacebook的cnn 结构特点 position embedding卷积的引入GLU控制信息的流动attention google的attention 结构特点 KVQ的思维架构multi-head attentionattention的多种应用 参考资料 机器翻译的常用架构是seq2seq,可是seq2seq中的核心模型RNN是序列模型…

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

[机器翻译]——pivot-based zero-shot translation based on fairseq

文章目录 前言翻译到en生成"伪"的、到英语的数据文件把每一个zs语言对翻译到en从fairseq-generate生成的文件中,抽取纯en文件 把en数据和所有zs语言对的tgt数据形成平行语料,然后做预处理形成en到tgt的平行语料预处理 在en到tgt语言的"伪…

大语言模型的多语言机器翻译能力分析

来自:南大NLP 进NLP群—>加入NLP交流群 01 研究动机 以ChatGPT为代表的大语言模型(Large Language Models, LLM)在机器翻译(Machine Translation, MT)任务上展现出了惊人的潜力。通过情景学习(In-Contex…

嗖的一下第二弹,这些好看的皮肤直接一键收下~~

✨前言 📢首先祝大家假期愉快🚀 这个假期,大家是怎么玩的呢❓ 小博主我趁着假期也摆了几天😜 因此有好几天没有更新文章了…… 今天偷偷的发一篇文章,浅浅做个样子吧😬 今儿写的文章是继上次写的&#xff…

为什么国内APP热衷于皮肤特效

微博跟腾讯学到了精髓,功能不够皮肤来凑 这不是吐槽呀,是有一定心理学在里面的,人们普遍希望跟身边的人有差异性的,就好像打游戏我买个皮肤在战场上可以秀一下;在游戏中我买个xxx刀,可以打出火花星星等效果…

云炬Android开发教程0 jdk下载与安装教程(小白)

第一步:jdk下载 (1)oracle官网地址下载:点我进官网下载 (2)百度云连接下载(提供8u211版本): 链接:https://pan.baidu.com/s/1i74YGO8zXuGxumZYGakKKw 提取码…

墨墨背单词

墨墨背单词 推荐一款背单词软件:墨墨背单词(无限单词版) 下载链接:https://download.csdn.net/download/EQ_cyc/12438004

将有道云词典单词本导入到墨墨背单词

有道云词典导出.XML文件用EXCEL导入.XML文件。点击:数据>自其他来源>来自XML数据导入 导入后会提示以下界面,全部点击确定即可 导入数据后变成这样子 每一行的间距可能特别大,不用管直接复制第一列,放到一个新建的txt文件…

墨墨背单词(最新无限单词版---持续更新)

----------2020年5月27日更新---------- 废话不多说先上图 用户可以直接登录账号,由于现在直接注册功能系统会提示更新到最新系统导致无法注册账户,但是可以通过忘记密码的形式来曲线注册账户,方法如下 软件的下载连接为: https://down…

获取墨墨背单词里面的单词书中的单词

首先,其实是直接尝试抓包获取的,不过在抓包的信息中没发现类似的内容,然后就去百度了以下,发现还是有聪明人。 把下载的 apk 文件解压缩一下,把里面的 assets 文件夹里面的 maimemo.v3.db 直接拖到navicat中&#xff…

[小小项目]背单词的程序---1.0_纯C语言_单文件版本

文章目录 前言:可以学到什么?一、功能介绍以及演示二、准备工作1)准备所需的单词的文本2)任意的C语言开发环境 三、代码1)读取文件,不存在则爆出异常2)开辟空间来存放读取出来的内容3&#xff0…

android 补签控件,墨墨背单词怎么补签 看完你就懂了

现在手机的普及让不少用户在手机上面学习英语,而墨墨背单词就是一款专业的英语学习软件,它可以提醒用户每日记忆单词,还有督促你学习的签到系统,通过每日的签到不仅可以提高你学习英语的动力还能免费提升每日学习单词的上限量呢。…

未root的情况下获取墨墨背单词的databases文件夹

文章目录 前言解决思路第一步:备份下载Winhex使用abe解压备份文件结语 前言 在我的《墨墨背单词免费版本地数据找回方法》这篇博客中提到:“复制出“databases”文件”。但这个文件夹并不是那么容易复制出的,如果你的手机已经被root了&#…