1.前言

图表要素如下图所示

# sphinx_gallery_thumbnail_number = 3
import matplotlib.pyplot as plt
import numpy as np

2 画布(Figure)

https://matplotlib.org/api/figure_api.html#module-matplotlib.figure

这就类似于我们在电脑上画画一样,需要打开画图软件,创建一个空白的白板,这个白板就是我们后续画图的地方。

 创建

fig = plt.figure()  # an empty figure with no axes

3 直角坐标系(Axes)

https://matplotlib.org/api/axes_api.html#module-matplotlib.axes

This is what you think of as 'a plot', it is the region of the image with the data space.

3.1 add_subplot(1,1,1)

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(6, 6))

fig.add_subplot(1,1,1)

plt.show()

结果

 3.2  subplot2grid

在使用 subplot2grid 函数创建直角坐标系的时候,不需要事先创建画布,可以直接使用创建,比如我们下面创建一个很简单的折线图和柱状图:

import matplotlib.pyplot as plt
import numpy as np x = np.arange(4)
y = np.arange(4) # 绘制折线图
plt.subplot2grid((2,2),(0,0))
plt.plot(x, y) # 绘制柱状图
plt.subplot2grid((2,2),(0,1))
plt.bar(x, y) plt.show()

 3.3 subplot

同上面的 subplot2grid 一样,我们同样可以通过 subplot 来绘制直角坐标系,比如我们拿上面的例子再使用 subplot 写一遍:

import matplotlib.pyplot as plt
import numpy as np x = np.arange(4)
y = np.arange(4) # 绘制折线图
plt.subplot(221)
plt.plot(x, y) # 绘制柱状图
plt.subplot(222)
plt.bar(x, y) plt.show()

3.4  subplots

https://matplotlib.org/tutorials/intermediate/gridspec.html#sphx-glr-tutorials-intermediate-gridspec-py

https://matplotlib.org/tutorials/intermediate/tight_layout_guide.html#sphx-glr-tutorials-intermediate-tight-layout-guide-py

subplots 看起来和 subplot 很像,实际上也是非常像的,它和 subplot 的不同之处是 subplot 一次只能返回一个坐标系,而 subplots一次可以返回多个坐标系。

import matplotlib.pyplot as plt
import numpy as np x = np.arange(4)
y = np.arange(4) fig, axes = plt.subplots(2, 2)
# 绘制折线图
axes[0,0].plot(x,y)
# 绘制柱状图
axes[0,1].bar(x,y)
plt.show()

结果如下:

可以看到,我们虽然只使用到了两个坐标,但实际上 subplots 还是会帮我们将 4 个坐标全都创建出来。

4 坐标轴(Axis)

https://matplotlib.org/api/axis_api.html#module-matplotlib.axis

import matplotlib.pyplot as plt

x_data = ['','','','','','','']
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlabel('年份')
plt.ylabel('销量') plt.plot(x_data, y_data) plt.show()

4.1 坐标轴标题设置(axis label)

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

x_data = ['','','','','','','']
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlabel('年份')
plt.ylabel(
'销量') plt.plot(x_data, y_data) plt.show()

我们还可以通过参数对文本的相关属性进行设置,下面看下一些常用的设置参数:

plt.xlabel('年份', labelpad=50, fontsize='xx-large', fontweight='bold', rotation='vertical', backgroundcolor='red')
plt.ylabel('销量', labelpad=50)

xlabel 中常用的一些参数:

  • fontsize : 设置字体大小,默认12,可选参数 ['xx-small', 'x-small', 'small', 'medium', 'large','x-large', 'xx-large']
  • fontweight : 设置字体粗细,可选参数 ['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black']
  • fontstyle : 设置字体类型,可选参数[ 'normal' | 'italic' | 'oblique' ],italic斜体,oblique倾斜
  • verticalalignment : 设置水平对齐方式 ,可选参数 : 'center' , 'top' , 'bottom' ,'baseline'
  • horizontalalignment : 设置垂直对齐方式,可选参数:left,right,center
  • rotation : (旋转角度)可选参数为:vertical,horizontal 也可以为数字
  • alpha : 透明度,参数值0至1之间
  • backgroundcolor : 标题背景颜色
  • bbox : 给标题增加外框 ,常用参数如下:
    • boxstyle 方框外形
    • facecolor (简写fc)背景颜色
    • edgecolor (简写ec)边框线条颜色
    • edgewidth 边框线条大小

4.2 刻度设置(tick)

默认坐标轴是显示 x y 的值,但是也可以自定义显示不同的刻度,这里需要使用到的函数为 xticks 和 yticks 两个函数:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xticks(x_data, ['2011年','2012年','2013年','2014年','2015年','2016年','2017年'])
plt.yticks(y_data)
plt.plot(x_data, y_data) plt.show()

有些时候,由于数据脱敏的需要,我们不要显示刻度,还可以这么写:

plt.xticks(x_data, [])
plt.yticks(y_data, [])

4.3 坐标轴范围设置

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlim(2011, 2020)
plt.ylim(50000, 90000
) plt.plot(x_data, y_data) plt.show()

4.4 网格线设置(grid)

网格线默认是关闭的,我们可以通过函数 grid 修改参数 b 来开启网格线,如下:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.plot(x_data, y_data) plt.grid(b=True) plt.show()

结果如下:

我们不仅可开启网格线,还可以通过参数 axis 来控制是开启哪个轴的网格线:

# 开启 x 轴网格线
plt.grid(b=True, axis='x')
# 开启 y 轴网格线
plt.grid(b=True, axis='y')

4.5 图例设置(legend)

https://matplotlib.org/tutorials/intermediate/legend_guide.html#legend-location

图例能对图表起到注释的作用,我们可以通过参数 label 对该图表的图例进行设置,示例如下:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

x_data = [2011,2012,2013,2014,2015,2016,2017]
y_data = [58000,60200,63000,71000,84000,90500,107000] plt.plot(x_data, y_data, label = '折线图')
plt.bar(x_data, y_data, label = '柱状图') plt.legend() plt.show()

结果如下:

4.6 图表标题设置(Title)

图表标题是用来概括整张图表现的内容的,我们可以通过如下方式设置一张图的标题:

plt.title(label='xxx 公司 xxx 产品销量')

结果如下:

5 Artist

https://matplotlib.org/api/artist_api.html#module-matplotlib.artist

数据可视化基础专题(九):Matplotlib 基础(一)坐标相关的更多相关文章

  1. 数据可视化利器pyechart和matplotlib比较

    python中用作数据可视化的工具有多种,其中matplotlib最为基础.故在工具选择上,图形美观之外,操作方便即上乘. 本文着重说明常见图表用基础版matplotlib和改良版pyecharts作 ...

  2. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

  3. 数据可视化(一)-Matplotlib简易入门

    本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...

  4. 数据可视化实例(九): 边缘箱形图(matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter7/chapter7 边缘箱形图 (Marginal Boxplot) 边缘箱图与边缘直方图具有相似的用 ...

  5. 数据可视化-D3js-展示古地理图和古地理坐标反算^_^gplates古地理坐标反算接口

    在线演示 <!DOCTYPE html> <html> <head> <link type="image/png" rel="i ...

  6. python -- 数据可视化(二)

    python -- 数据可视化 一.Matplotlib 绘图 1.图形对象(图形窗口) mp.figure(窗口名称, figsize=窗口大小, dpi=分辨率, facecolor=颜色) 如果 ...

  7. 前端er必须掌握的数据可视化技术

    又是一月结束,打工人准时准点的汇报工作如期和大家见面啦.提到汇报,必不可少的一部分就是数据的汇总.分析. 作为一名合格的社会人,我们每天都在工作.生活.学习中和数字打交道.小到量化的工作内容,大到具体 ...

  8. python-模拟掷骰子,两个筛子数据可视化

    """ 作者:zxj 功能:模拟掷骰子,两个筛子数据可视化 版本:3.0 日期:19/3/24 """ import random impo ...

  9. 分形、分形几何、数据可视化、Python绘图

    本系列采用turtle.matplotlib.numpy这三个Python工具,以分形与计算机图像处理的经典算法为实例,通过程序和图像,来帮助读者一步步掌握Python绘图和数据可视化的方法和技巧,并 ...

  10. Python数据可视化基础讲解

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:爱数据学习社 首先,要知道我们用哪些库来画图? matplotlib ...

随机推荐

  1. 【转载】图解NumPy

    目录 1. 读写文件 2. 内建向量/矩阵 3. 切片操作 4. 聚合函数 4.1. 向量 4.2. 矩阵 5. 矩阵的转置和重构 6. 常用操作API 7. 应用实例 7.1. 生成向量.矩阵 7. ...

  2. [转] Socket通信实例

    点击阅读原文 Client端: #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> ...

  3. Codeforces Round #561 (Div. 2) A Tale of Two Lands 【二分】

    A Tale of Two Lands 题目链接(点击) The legend of the foundation of Vectorland talks of two integers xx and ...

  4. Dorado开发——树形下拉框

    最近在学习Dorado开发的过程中,遇到了一个问题,Dorado的树形下拉框选择:Dorado默认情况下父节点和子节点都是可选的,而我要实现的是父节点不可选. 解决办法:在下拉框中,判断父子节点,点击 ...

  5. xdoj 2020校赛复盘

    平时写东西都不喜欢复盘,这肯定不是一个好习惯,感觉每次花好几个小时甚至好几天写题目然后没写出来也不去看题解是一种很蠢的行为( 花了这么久时间打校赛,虽然水平很low,数据结构也不太会用,还是记录一下自 ...

  6. 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

    题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...

  7. (六)POI-操作Excel的poi的字体设置

    原文链接:https://blog.csdn.net/class157/article/details/92817286 package com.java.poi; import org.apache ...

  8. SpringBoot从入门到放弃之配置Spring-Data-JPA自动建表

    pom文件配置引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  9. JavaScript this 关键词

    this是什么呢? JavaScript this 关键词指的是它所属的对象. 它拥有不同的值,具体取决于它所使用的位置: 在方法中,this 指的是所有者对象. 单独的情况下,this 指的是全局对 ...

  10. 无题II HDU - 2236 【二分图+二分答案】

    题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据第一行输入一 ...