matplotlib不同类型的图

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

线性图

使用plot或者subplots可以创建线形图

x = np.linspace(0, 2, 100)

# Note that even in the OO-style, we use `.pyplot.figure` to create the figure.
fig, ax = plt.subplots()  # Create a figure and an axes.
ax.plot(x, x, label='linear')  # Plot some data on the axes.
ax.plot(x, x**2, label='quadratic')  # Plot more data on the axes...
ax.plot(x, x**3, label='cubic')  # ... and some more.
ax.set_xlabel('x label')  # Add an x-label to the axes.
ax.set_ylabel('y label')  # Add a y-label to the axes.
ax.set_title("Simple Plot")  # Add a title to the axes.
ax.legend()  # Add a legend.
png
png

条形图

条形图使用bar()方法来创建

横向条形图使用barh()方法来创建

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html#matplotlib.pyplot.bar

条形图的参数:

  • x - 表示条形的x坐标的标量序列。如果x是条形中心(默认)或左边缘,则对齐控件。

  • height - 标量或标量序列表示条的高度。

  • width - 标量或类似数组,可选。条形的宽度默认为0.8

  • bottom - 标量或类似数组,可选。条形的y坐标默认为None

  • align - {'center','edge'},可选,默认:center

png
png

直方图

直方图是数值数据分布的精确表示。它是连续变量的概率分布的估计,它是一种条形图。要构建直方图,请按照以下步骤操作 -

Bin值范围。将整个值范围划分为一系列间隔。计算每个间隔中有多少值。

直方图的参数:

  • x - 数组或数组序列。

  • bins - 整数或序列或auto,可选项。

  • range - bins的下部和上部范围。

  • density - 如果为True,则返回元组的第一个元素将是规范化以形成概率密度的计数。

  • cumulative - 如果为True,则计算直方图,其中每个bin给出该bin中的计数加上较小值的所有bin。

  • histtype - 要绘制的直方图的类型,默认为bar。

png

饼图

饼图只能显示一系列数据。饼图在一个数据系列中显示项目的大小(称为楔形),与项目的总和成比例。饼图中的数据点显示为整个饼图的百分比。

Matplotlib API有一个pie()函数,它生成一个表示数组中数据的饼图。每个楔形的分数面积由x/sum(x)给出。如果sum(x<1,那么x的值直接给出小数区域,并且数组将不被标准化。结果饼图将有一个大小为1的空楔 - sum(x)。

如果图形和轴是方形,或者轴方向相等,则饼图看起来最佳。

下表列出了饼图的参数 -

  • x - 数组式,楔形大小。

  • labels - 列表。一系列字符串,为每个楔形提供标签。

  • colors - 一系列matplotlib颜色参数,饼图将通过它循环。如果为None,将使用当前活动周期中的颜色。

  • Autopct - string用于用数值标记楔形。标签将放在楔子内。格式字符串将为fmt%pct

png

散点图

散点图用于绘制水平轴和垂直轴上的数据点,以试图显示一个变量受另一个变量影响的程度。数据表中的每一行都由一个标记表示,该位置取决于其在X和Y轴上设置的列中的值。可以将第三个变量设置为对应于标记的颜色或大小,从而为该图添加另一个维度。

png

轮廓图

轮廓图(有时称为“水平图”)是一种在二维平面上显示三维表面的方法。 它绘制了y轴上的两个预测变量X Y和轮廓的响应变量Z。 这些轮廓有时称为z切片或等响应值。

如果要查看Z如何随两个输入XY的变化而变化,则轮廓图是非常适用的,例如Z = f(X,Y)。 两个变量函数的等值线或等值线是函数具有常数值的曲线。

自变量xy通常限于称为meshgrid的规则网格。 numpy.meshgrid使用x值数组和y值数组创建一个矩形网格。

Matplotlib API包含分别绘制轮廓线和填充轮廓的contour()contourf()函数。 两个函数都需要三个参数xyz

png

3D图

尽管Matplotlib最初设计时只考虑了二维绘图,但是在后来的版本中,Matplotlib的二维显示器上构建了一些三维绘图实用程序,以提供一组三维数据可视化工具。通过导入Matplotlib包中包含的mplot3d工具包,可以启用三维图。

可以通过将关键字projection ='3d'传递给任何法线轴创建例程来创建三维轴。

png

3D曲面图

曲面图显示指定的因变量(Y)和两个独立变量(XZ)之间的函数关系。该图是等高线图的伴随图。曲面图类似于线框图,但线框的每个面都是填充多边形。这可以帮助感知可视化曲面拓扑。plot_surface()函数xyz作为参数。

png

格式化轴

有时候一个或几个点比大量数据大得多。在这种情况下,轴的比例需要设置为对数(log)而不是正常比例。这是对数标度。在Matplotlib中,可以通过将axes对象的xscalevscale属性设置为log

有时还需要在轴编号和轴标签之间显示一些额外的距离。任一轴(xy或两者)的labelpad属性都可以设置为所需的值。

在以下示例的帮助下演示了上述两个功能。右边的子图具有对数刻度,左边的一个子图的x轴具有更远距离的标签。

相同的数据,在不同的刻度的情况下往往会显示出来不同的效果,这也是一种数据欺骗,有时候方便大家看,可能会对数据轴做一些手脚,起到更直观的效果。

png

设置刻度和刻度标签

刻度是表示轴上数据点的标记。到目前为止,Matplotlib在我们之前的所有例子中都自动接管了轴上间隔点的任务。Matplotlib的默认刻度定位器和格式化器在很多常见情况下通常都足够了。可以明确提及刻度线的位置和标签以满足特定要求。

xticks()yticks()函数将列表对象作为参数。列表中的元素表示将显示刻度的相应操作的位置。

此方法将使用刻度标记给定位置处的数据点。类似地,对应于刻度线的标签可以分别由set_xlabels()set_ylabels()函数设置。

它将在x轴上的标记下方显示文本标签。以下示例演示了刻度线和标签的使用。

png

Last updated

Was this helpful?