参考github:

https://github.com/yizhen20133868/Plot-Pictures-Tutorial-for-Paper​github.com

本篇文章是对matplotlib绘图的一些概念、一些通用性函数的综述。

对matplotlib的操作都是在一个figure上完成的,figure是一块画布,类似于现实中的画板。在一块画板上,可以绘制一幅或多幅图形,这些图形就是axes。当只有一个图形时,可以直接使用matplotlib.pyplot(简写为plt)来绘制。

首先我们要引入matplotlib,通用的简写如下:

import matplotlib.pyplot as plt

画图的第一步通常是使用plt.subplots()函数:

生成一块画布。前两个参数为x、y,将画布分成x行y列,每一块是一个axe,返回画布和axes的数组,后面还可以跟一些figure的参数。示例:

fig, axes = plt.subplots(1, 2, figsize = (8, 10))

之后调用各个axe的各个画图函数,即可对每一个小块进行作图。下介绍常用函数。

一、通用的一些参数

在调用函数对图形的文字、线条等进行操作时,有些参数是通用的。

  • size:设置大小;
  • color:设置颜色;
  • width:线条、柱体等的宽度

二、常用函数

文本设置:

axes.set_xlabel()函数:设置x轴标签。其常用参数有fontdict,设置各个属性。

axes.set_ylabel()函数:设置y轴标签。

axes.set_title()函数:设置标题。

axes.text()函数:添加文本。一般前两个参数为文本的x、y坐标,第三个参数为文本内容。还有两个较常用的参数ha和va,他们都是设置坐标点相对于文本的位置,ha是水平位置,可选的值有'center'、'right'、'left';va是竖直位置,可选的值有'center'、'top'、'bottom'。完整参数见:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.text.html?highlight=text#matplotlib.pyplot.text

坐标轴、刻度设置:

axes.set_xlim()函数:设置坐标范围。

axes.set_xticks()函数:设置坐标轴刻度。默认情况下是设置的主刻度,如果设置参数minor=True,那么就是设置的分刻度。示例:

axes.set_xticks([1, 2, 3])
axes.set_xticks([0.5, 1.5, 2.5, 3.5], minor=True)

axes.set_xticklabels()函数:设置主刻度的标签。

axes.Axis.set_minor_locator()函数:设置坐标轴最小刻度。参数是一个Locator类。示例如下:

axes.yaxis.set_minor_locator(MultipleLocator(0.005))

设置网格线:

axes.grid()函数:画网格线。参数which:表示在哪个刻度画网格线,可选的有‘minor’、‘major’、‘both’。axis:表示在哪个轴画线,可选的有‘x’、‘y’、‘both’。示例:

axe.grid(which = 'minor', c='lightgrey')

图例设置:

axes.legend()函数:设置图例。常用参数为loc,设置位置,可选值有:

完整参数见:https://matplotlib.org/api/legend_api.html?highlight=legend#module-matplotlib.legend

plt.tight_layout()函数可以自动调整子图参数,填充整个图像区域。

三、设置字体

设置全局的字体:

plt.rcParams["font.family"] = "Times New Roman"

设置局部的字体,常常改变需要设置的字体的fontdict参数中的family项,示例如下:

plt.title("a", fontdict={'family': 'Times New Roman'})

绘制折线图我们通常使用plot函数画曲线(折线)。每一个plot函数对应一条曲线,画多条线的时候调用多个plot函数即可。

四、折线图

plot()函数:

前两个参数为x、y。x:X轴数据,列表或数组;y:Y轴数据,列表或数组。后面还有很多的修饰曲线的参数,常用的有:color控制曲线颜色,linestyle(缩写ls)控制曲线的风格,marker控制数据点的风格等,其对应的常用字符在文章最后的附录。

示例:

fig, axes = plt.subplots(1, 1, figsize=(8, 4))
# 折线图
axes.plot(x, y, linestyle='-', color='#DE6B58', marker='x', linewidth=1.5)
axes.plot(x, y2, linestyle='-', color='#E1A084', marker='x', linewidth=1.5)
# 设置最小刻度间隔
axes.yaxis.set_minor_locator(MultipleLocator(2.5))
axes.xaxis.set_minor_locator(MultipleLocator(0.5))
# 画网格线
axes.grid(which='minor', c='lightgrey')
# 设置x、y轴标签
axes.set_ylabel("Generation Consistency")
axes.set_xlabel("KB Row Number")
# 设置y轴的刻度
axes.set_yticks([70, 75, 80, 85, 90, 95])
# 对每个数据点加标注
for x_, y_ in zip(x, y):axes.text(x_, y_, y_, ha='left', va='bottom')
for x_, y_ in zip(x, y2):axes.text(x_, y_, y_, ha='left', va='bottom')
# 展示图片
plt.show()

效果如下:

五、柱状图

1、普通柱状图

使用bar函数绘制柱状图,其常用参数如下:

其中非常常用的是width、label、alpha、edgecolor、hatch。

此外,常用axe.set_xticks来设置刻度,使用axe.set_xticklabels来设置每个刻度上的标签。

axes.spines['top'].set_visible(False)可以用来设置边框不可见,可选的有top、right、bottom、left四条边。

示例:

fig, axes = plt.subplots(1, 1, figsize=(5, 3))
# 画柱状图
axes.bar(x, a1,  width=0.4, label='height', color="#D2ACA3")
# 图例
axes.legend(loc='best')
# 设置坐标轴刻度、标签
axes.set_xticks([0, 1, 2, 3, 4, 5])
axes.set_yticks([160, 165, 170, 175, 180, 185, 190])
axes.set_ylim((160, 190))
axes.set_xticklabels(['zhouyi', 'xuweijia', 'lurenchi', 'chenxiao', 'weiyu', 'guhaiyao'])
# 设置title
axes.set_title('NLP group members heights')
# 网格线
axes.grid(linewidth=0.5, which="major", axis='y')
# 隐藏上、右边框
axes.spines['top'].set_visible(False)
axes.spines['right'].set_visible(False)

效果:

2、两对柱子竖直方向堆积

底下的柱体和普通柱状图画法一样。

画上面的柱子时,只需要再调用一个bar函数,这个bar函数要添加bottom参数,将bottom的值设置为底下柱子的数值即可。

示例:

axes.bar(x, y1,  width=0.4, label='height', color='#D2ACA3')
axes.bar(x, y2, width=0.4, bottom=y1, color="#EBDFDF", label='increse')

3、两对柱子并排排列

调用两次bar函数绘制两组柱体。让一组柱子的x值为x-width/2,另一组柱子的x值为x+width/2,即可实现两条柱子并排排列。

示例:

axes.bar(x - width / 2, a1,  width=width, label='2015', color="#D2ACA3")
axes.bar(x + width / 2, a2, width=width, label='2020', color="#EBDFDF")

4、给每根柱体加标注

一般使用循环的形式加text,并将参数ha设置为center、va设置为bottom。用法:

matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)

x, y : scalars 防止text的位置。s : str 内容text。fontdict : dictionary, optional, default: None 一个定义s格式的dict。

示例:

for i in range(6):axes.text(x[i], a1[i], a1[i], ha='center', va='bottom')

三、饼状图

饼图使用plt.pie函数绘制,其各参数如下:

其中labels、value、colors、explode是维数相同的列表。还有一些常用的参数:textprops可以设置所有文字(label和value)的属性、wedgeprops可以将饼状图设置为环状图。

pie()函数的返回值为饼片列表、文字标签列表、数值标签列表。可以先获得返回值,再通过setp()函数对相应的文字进行操作、调整。

此外,一般会使用plt.axis('equal')让饼状图看起来更圆。

示例:

fig, axe = plt.subplots(1, 1, figsize=(8, 5))font1 = {'family': 'Times New Roman', 'size': '15'}
# 饼状图各个部分的标签、值、颜色
labels = ['food', 'clothing', 'housing', 'transport']
values = [0.35, 0.15, 0.2, 0.3]
colors = ['#D2ACA3', '#EBDFDF', '#DE6B58', '#E1A084']
# 突出显示
explode = [0, 0.1, 0, 0]
# 标题
axe.set_title("daily cost", fontdict=font1)
# 画饼状图
wedge, texts, pcts = axe.pie(values, labels=labels, colors=colors, startangle=45, autopct='%3.1f%%', explode=explode)
axe.axis('equal')
# 图例
axe.legend(wedge, labels, fontsize=10, title='event', loc=2)
# 设置文本的属性plt.setp(texts, size=12)
plt.setp(pcts, size=12)
plt.show()

如果给pie函数加上了wedgeprops参数,则可画出环形饼图,示例如下:

将上面的代码中的pie函数的参数增加wedgeprops=dict(width=0.4)

matplotlib设置画布大小_PyTorch 49.matplotlib模块相关推荐

  1. python matplotlib 设置画布大小

    在matplotlib.pyplot.figure 函数内设置,参数名称为figsize. 匹配的关闭函数为matplotlib.pyplot.close 详情参考:https://matplotli ...

  2. python怎么设置画布大小_在Matplotlib中设置绘图画布的大小

    这是我对Matplotlib最大的挫折之一.我经常使用光栅数据,例如我想在其中添加彩色地图.图例和一些标题.matplotlib库中的任何简单示例都会导致分辨率不同,因此会重新采样数据.尤其是在做图像 ...

  3. Python设置画布大小_我用Python的Seaborn库绘制17个超好看图表

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 风朝露夜阴晴里,万户千门开闭时 ...

  4. Python设置画布大小_Python第25课:海龟绘图_自定义函数的应用

    本节知识点 1. 设置画布大小 2. 两个案例对比分析 3. 复习自定义函数 案例:餐布桌布设计 课堂笔记 作业布置 1.完成视频中两款餐布桌布的图案设计. 2.自己设计一款餐布桌布(可参考网上的图案 ...

  5. Python设置画布大小_Python绘图库Turtle详细分析

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  6. android 设置画布大小设置,设置画布大小 - Android

    我想保持画布位图的大小相同,因为当我将自定义视图添加到LinearLayout时显示具有不同大小的画布,并且想要将画布的大小设置为位图对象.代码设置画布大小 - Android 部分: public ...

  7. Python -- Matplotlib:设置画布大小和子图个数

    只有一个子图时 plt.figure() #默认画布大小 plt.figure( figsize=(width,height) ) #自定义画布大小(width,height) plt.plot(.. ...

  8. python怎么设置画布大小_python画图时设置分辨率和画布大小的实现(plt.figure())

    本文介绍了python画图时设置分辨率和画布大小的实现,主要使用plt.figure(),下面就一起来了解一下 plt.figure() 示例: import numpy as np import p ...

  9. Python设置画布大小_教你用 Python 写一个搞笑版的“笨鸟”游戏:牛逼的黄瓜

    我想你应该玩过这个鸟游戏: 想当年,小帅b和身边的朋友在玩这个游戏的时候玩到手到快废了... 今天,小帅b心血来潮,要不咱们自己用 Python 撸一个这样的游戏吧,想想还是挺好玩的. 那么接下来就是 ...

最新文章

  1. 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述
  2. 【最大团】【HDU1530】【Maximum Clique】
  3. Docker 镜像小结---操作指令介绍(七)
  4. NeurIPS 2018 | 如何用循环关系网络机智地解决数独类关系推理任务?
  5. 《流浪地球》是一部违反科学常识的大烂片
  6. vs2010利用属性表自动配置OpenCV(XP的32位系统,opencv版本是2.4.10)
  7. EASYHOOK逆向寒假生涯(20/100)
  8. ubuntu系统下创建软件桌面快捷方式
  9. oracle别名作用范围,在Oracle的Where子句子查询中使用别名或表名,
  10. stream 的方式遍历(亲测)
  11. echarts 水桶注水式柱状图
  12. 再谈子网划分方法与子网划分示例
  13. JavaWeb项目生成PDF文件添加水印图片并导出
  14. 金士顿内存条真假测试软件,金士顿内存条真伪怎么看?金士顿内存条判别真伪的几种方法...
  15. mt7620a上tf卡驱动的支持
  16. 正态总体参数的假设检验
  17. Android完美实现kitkat透明导航效果
  18. pdo_dblib.dll for php7,php_pdo_dblib.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
  19. python 工资管理软件_使用Python计算公司所有员工的薪资报表,核算
  20. c语言基础 —— 程序结构

热门文章

  1. Deep Learning 【Nature review】
  2. inittab文件剖析[CentOS 5.X](第二版)
  3. 元素隐式具有 “any” 类型,因为类型“Shared”没有索引签名问题解决思路
  4. Maven 打包war文件
  5. minSdkVersion、compileSdkVersion和targetSdkVersion
  6. JS的console使用
  7. 数据库中,连接有哪些不同类型?请说明这些类型之间的差异,以及为何在某些情形下,某种连接会比较好。...
  8. NI Vision for LabVIEW 基础(一):NI Vision 简介
  9. 今天工作中碰到一个clone的问题
  10. Code Project - Your First C# Web Service