Python之Matplotlib数据可视化(一):简易线形图(颜色、风格、坐标轴、图像标签)

在所有图形中,最简单的应该就是线性方程 y = f (x) 的可视化了。来看看如何创建这个简单的线形图。首先需要导入以下命令:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

要画 Matplotlib 图形时,都需要先创建一个图形 fig 和一个坐标轴 ax 。创建图形与坐标轴的最简单做法如下所示:

fig = plt.figure()
ax = plt.axes()
plt.show()

在这里插入图片描述
在 Matplotlib 里面,figure( plt.Figure 类的一个实例)可以被看成是一个能够容纳各种坐标轴、图形、文字和标签的容器。就像在图中看到的那样,axes ( plt.Axes 类的一个实例)是一个带有刻度和标签的矩形,最终会包含所有可视化的图形元素。

从一组简单的正弦曲线(sinusoid)开始:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x));
plt.show()

在这里插入图片描述
如果想在一张图中创建多条线,可以重复调用 plot 命令:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x));
plt.show()

在这里插入图片描述

1 调整图形:线条的颜色与风格

1.1 线条颜色

通常对图形的第一次调整是调整它线条的颜色与风格。 plt.plot() 函数可以通过相应的参数设置颜色与风格。要修改颜色,就可以使用 color 参数,它支持各种颜色值的字符串。颜色的不同表示方法如下所示:

plt.plot(x, np.sin(x - 0), color='blue') # 标准颜色名称
plt.plot(x, np.sin(x - 1), color='g') # 缩写颜色代码(rgbcmyk)
plt.plot(x, np.sin(x - 2), color='0.75') # 范围在0~1的灰度值
plt.plot(x, np.sin(x - 3), color='#FFDD44') # 十六进制(RRGGBB,00~FF)
plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB元组,范围在0~1
plt.plot(x, np.sin(x - 5), color='chartreuse'); # HTML颜色名称

在这里插入图片描述
具体线条颜色设置表格如下:

颜色符号 说明
r 红色
g 绿色
b 蓝色
w 白色
c 青色
m 洋红
y 黄色
k 黑色

如果不指定颜色,Matplotlib 就会为多条线自动循环使用一组默认的颜色。

1.2 线条风格

与之类似,也可以用 linestyle 调整线条的风格:

plt.plot(x, x + 0, linestyle='solid')
plt.plot(x, x + 1, linestyle='dashed')
plt.plot(x, x + 2, linestyle='dashdot')
plt.plot(x, x + 3, linestyle='dotted');
# 你可以用下面的简写形式
plt.plot(x, x + 4, linestyle='-') # 实线
plt.plot(x, x + 5, linestyle='--') # 虚线
plt.plot(x, x + 6, linestyle='-.') # 点划线
plt.plot(x, x + 7, linestyle=':'); # 实点线

在这里插入图片描述

1.3 线条颜色和风格编码组合

如果你想用一种更简洁的方式,则可以将 linestyle 和 color 编码组合起来,作为 plt.plot() 函数的一个非关键字参数使用:

plt.plot(x, x + 0, '-g') # 绿色实线
plt.plot(x, x + 1, '--c') # 青色虚线
plt.plot(x, x + 2, '-.k') # 黑色点划线
plt.plot(x, x + 3, ':r'); # 红色实点线
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, x + 0, '-g') # 绿色实线
plt.plot(x, x + 1, '--c') # 青色虚线
plt.plot(x, x + 2, '-.k') # 黑色点划线
plt.plot(x, x + 3, ':r'); # 红色实点线
plt.show()

在这里插入图片描述
这些单字符颜色代码是 RGB(Red/Green/Blue)CMYK(Cyan/Magenta/Yellow/blacK)
颜色系统中的标准缩写形式,通常用于数字化彩色图形。

1.4 线条和标记节点样式:

  • 线条颜色:color=‘g’
  • 线条风格:linestyle=’–’
  • 线条粗细:linewidth=5.0
  • 标记风格:marker=‘o’
  • 标记颜色:markerfacecolor=‘b’
  • 标记尺寸:markersize=20
  • 透明度:alpha=0.5

线条和标记节点格式字符 如果不设置颜色,系统默认会取一个不同颜色来区别线条。

标记字符(mark) 说明
o 实心圈标记
. 点标记
, 像素标记,极小的点
v 倒三角标记
^ 上三角标记
> 右三角标记
< 左三角标记
* 星形标记
+ 十字标记
x = np.linspace(0, 10, 1000)
plt.plot(x,
         np.sin(x),
         marker='o',
         markersize=6,
         markerfacecolor='r',
         linestyle='-.',
         linewidth=5,
         alpha=0.8
        )

在这里插入图片描述

还有很多其他用来调整图像的关键字参数。若想了解更多的细节,建议你用 IPython 的帮助工具查看 plt.plot() 函数的程序文档

2 调整图形:坐标轴上下限

虽然 Matplotlib 会自动为你的图形选择最合适的坐标轴上下限,但是有时自定义坐标轴上下限可能会更好。调整坐标轴上下限最基础的方法是 plt.xlim()plt.ylim()

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5);
plt.show()

在这里插入图片描述
如果你想要让坐标轴逆序显示,那么也可以逆序设置坐标轴刻度值:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.xlim(10, 0)
plt.ylim(1.2, -1.2);
plt.show()

在这里插入图片描述
还有一个方法是 plt.axis()注意不要搞混 axes 和 axis)。通过传入 [xmin, xmax,ymin, ymax] 对应的值, plt.axis() 方法可以让你用一行代码设置 x 和 y 的限值。

plt.plot(x, np.sin(x))
plt.axis([-1, 11, -1.5, 1.5]);

在这里插入图片描述
plt.axis() 能做的可不止如此,它还可以按照图形的内容自动收紧坐标轴,不留空白区域。

plt.plot(x, np.sin(x))
plt.axis('tight');

在这里插入图片描述
你还可以实现更高级的配置,例如让屏幕上显示的图形分辨率为 1 :1,x 轴单位长度与 y 轴单位长度相等。

plt.plot(x, np.sin(x))
plt.axis('equal');

在这里插入图片描述
关于 plt.axis() 方法设置坐标轴上下限和其他更多功能,请参考 plt.axis() 的程序文档。

3 设置图形标签

介绍设置图形标签的方法:图形标题坐标轴标题简易图例

图形标题与坐标轴标题是最简单的标签,快速设置方法如下所示:

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)");

在这里插入图片描述
你可以通过优化参数来调整这些标签的位置、大小和风格。若想获取更多的信息,请参考Matplotlib 文档和对应函数的程序文档。

在单个坐标轴上显示多条线时,创建图例显示每条线是很有效的方法。Matplotlib 内置了一个简单快速的方法,可以用来创建图例,那就是plt.legend() 。虽然有不少用来设置图例的办法,但我觉得还是在 plt.plot 函数中用 label 参数为每条线设置一个标签最简单。

plt.plot(x, np.sin(x), '-g', label='sin(x)')
plt.plot(x, np.cos(x), ':b', label='cos(x)')
plt.axis('equal')
plt.legend();

在这里插入图片描述
你会发现, plt.legend() 函数会将每条线的标签与其风格、颜色自动匹配。关于通过 plt.legend() 设置图例的更多信息,请参考相应的程序文档。

4 Matplotlib 陷阱

虽然绝大多数的 plt 函数都可以直接转换成 ax 方法(例如 plt.plot() → ax.plot()plt.legend() → ax.legend() 等),但是并非所有的命令都可以这样用。尤其是用来设置坐标轴上下限、坐标轴标题和图形标题的函数,它们大都稍有差别。一些 MATLAB风格的方法和面向对象方法的转换如下所示:

•  plt.xlabel() →  ax.set_xlabel()
•  plt.ylabel() →  ax.set_ylabel()
•  plt.xlim() →  ax.set_xlim()
•  plt.ylim() →  ax.set_ylim()
•  plt.title() →  ax.set_title()

在用面向对象接口画图时,不需要单独调用这些函数,通常采用 ax.set() 方法一次性设置所有的属性是更简便的方法:

 ax = plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2),
xlabel='x', ylabel='sin(x)',
title='A Simple Plot');

在这里插入图片描述

备注

各位老铁来个“关注”、“点赞”、“评论”三连击哦
各位老铁来个“关注”、“点赞”、“评论”三连击哦
各位老铁来个“关注”、“点赞”、“评论”三连击哦

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ywsydwsbn/article/details/106573505