一、plt还是ax

看了许多书本中的画图示例,有直接在plt上画的,也有用ax画的,这两者究竟是什么,又有哪些区别呢。
从下面这一行代码进行解读:

fig,ax=plt.subplots()
  • 什么是fig?

在任何绘图之前,我们需要一个Figure对象,至少要有这一层才可以画。.plt 对应的就是最高层 scripting layer。这就是为什么它简单上手,但要调细节就不灵了。即:

fig=plt.figure()
  • 什么是ax,axes?
    axis 指的就是 x 坐标轴,y 坐标轴等,代表的是一根坐标轴。而 axes 在英文里是 axis 的复数形式,也就是说,axes 代表的其实是 figure 当中的一套坐标轴。之所以说一套而不是两个坐标轴,是因为如果你画三维的图,axes 就代表 3 根坐标轴了。所以,在一个 figure 当中,每添加一次 subplot ,其实就是添加了一套坐标轴,也就是添加了一个 axes,放在二维坐标里就是你添加了两根坐标轴,分别是 x 轴和 y 轴。

ax.plot 是在 artist layer 上操作。基本上可以实现任何细节的调试。

二、画图

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.读入数据

代码如下(示例):
数据集格式

3.实现的结果

3.1 plt代码


# Create figure
plt.figure(figsize=(12,6),dpi=300)
# Create bar plot
labels = data['MovieTitle']
t = data['Tomatometer']
a = data['AudienceScore']x=np.arange(0,len(labels)*2,2)width = 0.6
plt.bar(x-width/2,t,width=width,label='Tomatometer')
plt.bar(x+width/2,a,width=width,label='AudienceScore')# Specify ticks# Get current Axes for setting tick labels and horizontal grid# Set tick labels
plt.xticks(x,labels=labels,rotation=20)
# Add minor ticks for y-axis in the interval of 5
plt.minorticks_on()y = []
for i in range(0,101,20):if i % 20 ==0:y.append(str(i)+'%')y1 = np.arange(0,101,20)plt.yticks(y1,y)
# Add major horizontal grid with solid lines
plt.grid(which='major', axis='y',ls='-')# Add minor horizontal grid with dashed lines
plt.grid(which='minor', axis='y',ls=':')# Add title
plt.title('Movie comparison')
# Add legend
plt.legend()
# Show plot
plt.show()

3.2 ax代码


from matplotlib.ticker import MultipleLocator# Create figure
plt.figure(figsize=(16,8),dpi=300)
# Create bar plot
labels = data['MovieTitle']
t = data['Tomatometer']
a = data['AudienceScore']
x=np.arange(0,len(labels)*2,2)
width = 0.4
ax=plt.gca()
ax.bar(x-width/2,t,width=width,label='Tomatometer')
ax.bar(x+width/2,a,width=width,label='AudienceScore')
# Specify ticks
plt.xticks(x,labels=labels,rotation=20)
# Get current Axes for setting tick labels and horizontal grid# Set tick labels
yticks = ["0%","20%","40%","60%","80%","100%"]
y_ = np.arange(0,101,20)
ax.set_yticks(y_)
ax.set_yticklabels(yticks,fontsize=10) #
# Add minor ticks for y-axis in the interval of 5
yminorLocator = MultipleLocator(5)
ax.yaxis.set_minor_locator(yminorLocator)
# Add major horizontal grid with solid lines
ax.grid(which='major',linestyle='-',axis='y')
# Add minor horizontal grid with dashed lines
ax.grid(which="minor",linestyle=':')
# Add title
ax.set_title("Compare with Tomatometer & Audidence Score",fontsize=15)
# Add legend
ax.legend()
# Show plot
plt.show()

总结

如果将Matplotlib绘图和我们平常画画相类比,可以把Figure想象成一张纸(一般被称之为画布),Axes代表的则是纸中的一片区域(当然可以有多个区域,这是后续要说到的subplots),上一张更形象一点的图。

Matplotlib中的“plt”和“ax”,设置大小刻度,设置实线和虚线方格线相关推荐

  1. Matplotlib中的plt和ax都是啥?

    微信公众号:「Python读财」 如有问题或建议,请公众号留言 Pandas教程写的差不多了,来写一写与数据可视化相关的Matplotlib系列教程吧.读过Pandas系列文章的读者应该都知道,我写文 ...

  2. Matplotlib中的“ plt”和“ ax”到底是什么?

    Indeed, as the most popular and fundamental data visualisation library, Matplotlib is kind of confus ...

  3. Matplotlib中的“plt”和“ax”到底是什么?

    在幕布中绘图,还是在幕布上的单元格中绘图? ​ 实际上,作为最流行和最基础的数据可视化库,Matplotlib在某些方面有些令人困惑,这些部分经常有人问起. 我应该在什么时候使用"axes& ...

  4. python figure size_在matplotlib中改变figure的布局和大小实例

    以下来自Stack Overflow 从上面我们可以很清晰的看出应该如何使用matplotlib的figure方法. 补充知识:matplotlib 设置图形大小时 figsize 与 dpi 的关系 ...

  5. 【问题】HDFS中块(block)的大小为什么设置为128M?

    一.为什么HDFS中块(block)不能设置太大,也不能设置太小? 如果块设置过大, 一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢: 另一方面,mapreduc ...

  6. vmware中linux使用gparted调整磁盘大小并设置swap分区

    vmware中linux使用gparted调整磁盘大小并设置swap分区 今天使用虚拟机的时候,发现虚拟机快满了,提示磁盘空间小,不得不扩充虚拟机空间. 1首先把vmware中的ubuntu关机,然后 ...

  7. 更改matplotlib中x或y轴上的“刻度频率”?

    本文翻译自:Changing the "tick frequency" on x or y axis in matplotlib? I am trying to fix how p ...

  8. python导入表格后坐标轴刻度设置_Python-更改matplotlib中x或y轴上的“刻度频率”?...

    小编典典 你可以使用以下命令显式设置要在刻度线打勾的位置plt.xticks: plt.xticks(np.arange(min(x), max(x)+1, 1.0)) 例如, import nump ...

  9. python中的plt是什么意思_Matplotlib中的“plt”和“ax”到底是什么?

    在幕布中绘图,还是在幕布上的单元格中绘图? 实际上,作为最流行和最基础的数据可视化库,Matplotlib在某些方面有些令人困惑,这些部分经常有人问起.我应该在什么时候使用"axes&quo ...

最新文章

  1. Nature:实验室培育的大脑可以拥有意识吗?
  2. html连接服务器文件夹,云服务器html链接到文件夹
  3. openssl / vs2019 编译 openssl 1.0.2u 过程说明
  4. Problem A: 素数对
  5. CentOS 7 安装nginx
  6. Django - - - -视图层之视图函数(views)
  7. Quartus ii 13.1错误合集,持续更新
  8. 汇编学习--7.13--标志寄存器
  9. linux 内核 内存管理 bootmem alloctor 的初始化
  10. [转]FastJSON通过SerializeFilter定制序列化
  11. 搜狐校园“情感分析×推荐排序“算法大赛 AutoX方案 转载poteman
  12. Cookie、Session、Token、RefreshToken
  13. 简单 黑苹果dsdt教程_DSDT完美睡眠教程
  14. 肥胖和食物成瘾中脑 - 肠道 - 微生物组的相互作用
  15. 排列组合数计算公式及性质
  16. JDK11变化详解JDK8升级JDK11详细指南
  17. farm together(一起玩农场)奖励物品代码(截止2021.2.10)
  18. 首批 RISC-V 手机要来了,你准备好了吗?
  19. Qt利用QGraphicsScene编写Word排版工具导出PDF
  20. vscode在html看到图片的插件_利用花瓣插件 下载高清大图

热门文章

  1. 【功能安全】【ISO26262】产品开发:软件层面
  2. Wondershare Recoverit for Mac(万兴数据恢复软件)
  3. CAD缺少一个或多个SHX文件如何添加字库
  4. sap字段及描述底表_SAP常用表及中文描述
  5. 福建省宁德市谷歌卫星地图下载
  6. git 报错:解决拒接接入问题
  7. 云媒易推广:实体店铺抖音推广技巧分享
  8. Qlik Sense的8个提示和技巧
  9. 夜神模拟器连接计算机遭拒解决方案
  10. sonar java_如何正确配置属性“sonar.java.binaries”?