欢迎来真孝善网,为您提供真孝善正能量书籍故事!

Matplotlib数据绘图入门教程:基础操作指南

时间:11-18 神话故事 提交错误

大家好,Matplotlib数据绘图入门教程:基础操作指南相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Matplotlib数据绘图入门教程:基础操作指南和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

%matplotlib inlinefrom matplotlib import pyplot as plt简单图形绘制绘制一个简单的折线图。

plt.plot([1, 2, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]) pyplot模块是Matplotlib的核心模块,提供了几乎所有的样式2D 图形是通过该模块绘制的。

如果需要自定义横坐标值,只需要传入两个列表即可。

plt.plot([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],

[1, 2, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1])image.png

绘制自定义x、yx、y 的正弦图。

import numpy as np #加载数值计算模块

# 生成-2PI和2PI之间等距的1000个值,即X坐标

X=np.linspace(-2*np.pi, 2*np.pi, 1000)

# 计算y坐标

y=np.sin(X)

# 将X、y坐标输入到方法中的`*args`中

plt.plot(X, y)pyplot.plot 这里画的正弦曲线实际上并不是严格意义上的曲线,而仍然是两点之间的直线。这里看起来像一条曲线,因为样本点彼此非常接近。

柱形图

plt.bar([1, 2, 3], [1, 2, 3]) 散点图。例如,我们通过GPS收集的数据点将包含两个值:经度和纬度。这种情况可以画成散点图。

# X和y的坐标有numpy随机生成0到1的1000个值

X=np.random.ranf(1000)

y=np.随机.ranf(1000)

# 将X、y坐标输入到方法中的`*args`中

当有限列表以百分比形式呈现时, plt.scatter(X, y) 饼图特别有用。可以清楚地看到类别之间的大小关系以及每个类别占总数的比例。

plt.pie([1, 2, 3, 4, 5]) 量场图是由向量组成的图像,广泛应用于气象等方面。从图形的角度来看,数量场图是一个方向箭头符号。

X, y=np.mgrid[0:10, 0:10]

plt.quiver(X, y)等高线图

# 生成网格矩阵

x=np.linspace(-5, 5, 500)

y=np.linspace(-5, 5, 500)

X, Y=np.meshgrid(x, y)

# 轮廓计算公式

Z=(1 - X/2 + X ** 3 + Y ** 4) * np.exp(-X ** 2 - Y ** 2)

plt.contourf(X, Y, Z)定义图形样式二维折线图参数

图片.png

绘制三角函数的图形。 # 生成-2PI和2PI之间等距的1000个值,即X坐标

X=np.linspace(-2 * np.pi, 2 * np.pi, 1000)

# 计算sin()对应的纵坐标

y1=np.sin(X)

# 计算cos()对应的纵坐标

y2=np.cos(X)

# 将X、y坐标输入到方法中的`*args`中

plt.plot(X, y1, 颜色="r", 线型="--", 线宽=2, alpha=0.8)

plt.plot(X, y2, color="b", linestyle="-", linewidth=2) 散点图参数

image.png# 生成随机数据

x=np.random.rand(100)

y=np.random.rand(100)

颜色=np.random.rand(100)

大小=np.random.normal(50, 60, 10)

plt.scatter(x, y, s=size, c=colors) # 绘制散点图饼图时,还可以进一步设置其颜色、标签、阴影等样式。

label="Cat", "Dog", "Cattle", "Sheep", "Horse" # 每个类别的标签

color="r", "g", "r", "g", "y" # 每个类别的颜色

size=[1, 2, 3, 4, 5] # 每个类别的比例

explode=(0, 0, 0, 0, 0.2) # 每个类别的偏移半径

# 绘制饼图

plt.pie(大小,颜色=颜色,爆炸=爆炸,

labels=标签,shadow=True,autopct="%1.1f%%")

# 饼图是一个完美的圆形

plt.axis("equal")组合图形样式把需要的图形的代码放在一起就可以了,比如画一个包含柱形图和折线图的组合图。

x=[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

y_bar=[3, 4, 6, 8, 9, 10, 9, 11, 7, 8]

y_line=[2, 3, 5, 7, 8, 9, 8, 10, 6, 7]

plt.bar(x, y_bar)

plt.plot(x, y_line, "-o", color="y") 两个图的横坐标必须共享,Matplotlib 才能自动确定组合图的效果。

定义图形位置需要调整图形的位置,或者需要将几个单独的图形拼接在一起。此时,我们需要引入plt.figure图形对象。

绘制自定义位置的图表。

x=np.linspace(0, 10, 20) # 生成数据

y=x * x + 2

Fig=plt.figure() # 创建一个新的图形对象

axes=Fig.add_axes([0.5, 0.5, 0.8, 0.8]) # 控制画布的左、下、宽、高

axes.plot(x, y, "r")figure相当于一个用于绘画的画板,axes相当于画板上铺的画布。我们在画布上绘制图像,所以就有了plot、set_xlabel等操作。

图片.png

借助图形对象,我们可以实现小图中大图的效果。

Fig=plt.figure() # 创建一个新的画板

axes1=Fig.add_axes([0.1, 0.1, 0.8, 0.8]) # 大画布

axes2=Fig.add_axes([0.2, 0.5, 0.4, 0.3]) # 小画布

axes1.plot(x, y, "r") # 大画布

axes2.plot(y, x, "g") # 小画布使用add_axes() 方法将画布轴添加到我们设置的画板图形中。在Matplotlib中,还有另一种添加canvas的方式,那就是plt.subplots(),其中和axes相当于canvas。

图,轴=plt.subplots()

axes.plot(x, y, "r") 借助plt.subplots(),我们可以绘制子图,即将多个图形按照一定的顺序拼接在一起。

Fig,axes=plt.subplots(nrows=1,ncols=2) # 子图为1 行2 列

用于轴中的斧头:

ax.plot(x, y, "r") 可以通过设置plt.subplots 的参数来调整画布大小和显示精度。

无花果,轴=plt.子图(

Figsize=(16, 9), dpi=50) # 通过figsize调整大小,通过dpi调整显示精度

axes.plot(x, y, "r")规范绘图方法首先,对于任何图形绘制,建议通过plt.figure() 或plt.subplots() 来管理一个完整的图形对象。而不是简单地使用plt.plot(.) 之类的语句来绘图。

管理完整的图形对象有很多好处。在图形的基础上,预留了大量的空间用于后期添加图例、图形样式、注释等。除了。代码看起来也更加标准化,更具可读性。

绘制包含图标题、轴标题和图例的图表

图,轴=plt.subplots()

axes.set_xlabel("x label") # 水平轴名称

axis.set_ylabel("y 标签")

axes.set_title("title") # 图形名称

轴.plot(x, x**2)

轴.plot(x, x**3)

axes.legend(["y=x**2", "y=x**3"], loc=0) # 图例图例中的loc参数标记图例位置,分别为1、2、3、4代表:右上角、左上角、左下角、右下角; 0代表自适应

可以设置线条的颜色、透明度等属性

图,轴=plt.subplots()

axis.plot(x, x+1, color="red", alpha=0.5)

axis.plot(x, x+2, color="#1155dd")

axes.plot(x, x+3, color="#15cc55") 除了实线和虚线之外,还有很多丰富的线型可供选择。

图, ax=plt.subplots(figsize=(12, 6))

# 线宽

ax.plot(x, x+1, 颜色="蓝色", 线宽=0.25)

ax.plot(x, x+2, 颜色="蓝色", 线宽=0.50)

ax.plot(x, x+3, 颜色="蓝色", 线宽=1.00)

ax.plot(x, x+4, 颜色="蓝色", 线宽=2.00)

# 虚线类型

ax.plot(x, x+5, color="red", lw=2, linestyle="-")

ax.plot(x, x+6, color="red", lw=2, ls="-.")

ax.plot(x, x+7, color="red", lw=2, ls=":")

# 虚线错开宽度

line,=ax.plot(x, x+8, color="black", lw=1.50)

line.set_dashes([5, 10, 15, 10])

象征

ax.plot(x, x + 9, color="绿色", lw=2, ls="--", 标记="+")

ax.plot(x, x+10, color="绿色", lw=2, ls="--", 标记="o")

ax.plot(x, x+11, color="绿色", lw=2, ls="--", 标记="s")

ax.plot(x, x+12, color="绿色", lw=2, ls="--", 标记="1")

# 符号大小和颜色

ax.plot(x, x+13, 颜色="紫色", lw=1, ls="-", 标记="o", 标记大小=2)

ax.plot(x, x+14, 颜色="紫色", lw=1, ls="-", 标记="o", 标记大小=4)

ax.plot(x, x+15, color="紫色", lw=1, ls="-",

标记="o",标记大小=8,标记面颜色="红色")

ax.plot(x, x+16, 颜色="紫色", lw=1, ls="-", 标记="s", 标记大小=8,

markerfacecolor="yellow",markeredgewidth=2,markeredgecolor="blue") 我们可能需要显示画布网格或调整轴范围。设置画布网格和轴范围。在这里,我们通过指定axes[0]序列号来实现子图的自定义顺序。

图,轴=plt.subplots(1, 2, Figsize=(10, 5))

# 显示网格

轴[0].plot(x, x**2, x, x**3, lw=2)

轴[0].grid(True)

#设置坐标轴范围

轴[1].plot(x, x**2, x, x**3)

轴[1].set_ylim([0, 60])

axes[1].set_xlim([2, 5]) 绘制由散点图、梯形图、条形图和面积图组成的子图。

n=np.array([0, 1, 2, 3, 4, 5])

图, 轴=plt.subplots(1, 4, Figsize=(16, 5))

轴[0].scatter(x, x + 0.25*np.random.randn(len(x)))

轴[0].set_title("分散")

轴[1].step(n, n**2, lw=2)

轴[1].set_title("步骤")

轴[2].bar(n,n**2,align="center",宽度=0.5,alpha=0.5)

轴[2].set_title("bar")

轴[3].fill_ Between(x, x**2, x**3, color="green", alpha=0.5)

axes[3].set_title("fill_ Between")图形标注方法图像标注是在屏幕上添加文本标注、指示箭头、图片框等各种标注元素。

文本标注方法由matplotlib.pyplot.text()实现。最基本的样式是matplotlib.pyplot.text(x, y, s),其中x, y 用于标签定位,s 代表标签字符串。另外,还可以通过fontsize=、horizontalalignment=等参数调整注释字体的大小、对齐方式等。

向柱形图添加文本标签

图,轴=plt.subplots()

x_bar=[10, 20, 30, 40, 50] # 柱形图横坐标

y_bar=[0.5, 0.6, 0.3, 0.4, 0.8] # 柱形图纵坐标

bar=axs.bar(x_bar, y_bar, color="blue", label=x_bar, width=2) # 绘制柱形图

对于i,枚举中的矩形(条):

x_text=rect.get_x() # 获取柱形图的横坐标

y_text=rect.get_height() + 0.01 # 获取列的高度并添加0.01

plt.text(x_text, y_text, "%.1f" % y_bar[i]) # 除了文本标注之外,还可以通过matplotlib.pyplot.annotate() 方法为图像添加箭头等样式标注。

图,轴=plt.subplots()

bar=axs.bar(x_bar, y_bar, color="blue", label=x_bar, width=2) # 绘制柱形图

对于i,枚举中的矩形(条):

x_text=rect.get_x() # 获取柱形图的横坐标

y_text=rect.get_height() + 0.01 # 获取列的高度并添加0.01

plt.text(x_text, y_text, "%.1f" % y_bar[i]) # 标记文本

# 添加箭头标签

plt.annotate("最小值", xy=(32, 0.3), xytext=(36, 0.3),

arrowprops=dict(facecolor="black", width=1, headwidth=7))xy=()表示终点坐标,xytext=()表示起点坐标。箭头绘制过程中,arrowprops=()用于设置箭头样式,facecolor=设置颜色,width=设置箭头尾部宽度,headwidth=设置箭头宽度,arrowstyle=可用于改变箭头风格。

兼容 MATLAB 代码风格接口来自matplotlib 导入pylabx=np.linspace(0, 10, 20)

y=x * x + 2

pylab.plot(x, y, "r") # "r" 代表红色。如果我们想绘制子图,可以使用subplot 方法来绘制子图:

pylab.subplot(1, 2, 1) #括号内的内容代表(行,列,索引)

pylab.plot(x, y, "r--") # ‘’中的内容决定颜色和线条样式

pylab.subplot(1, 2, 2)

pylab.plot(y, x, "g*-") 尝试通过Matplotlib绘制下面的图像

image.png导入numpy 作为np

将matplotlib.pyplot 导入为plt

plt.figure(figsize=(8, 5), dpi=80)

斧头=plt.子图(111)

ax.spines["right"].set_color("none")

ax.spines["top"].set_color("none")

ax.xaxis.set_ticks_position("底部")

ax.spines["底部"].set_position(("数据", 0))

ax.yaxis.set_ticks_position("左")

ax.spines["left"].set_position(("data", 0))

X=np.linspace(-np.pi, np.pi, 256, 端点=True)

C, S=np.cos(X), np.sin(X)

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="Cos 函数")

plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="正弦函数")

plt.xlim(X.min() * 1.1, X.max() * 1.1)

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],

[r"$-pi$", r"$-pi/2$", r"$0$", r"$+pi/2$", r"$+pi$"])

plt.ylim(C.min() * 1.1, C.max() * 1.1)

plt.yticks([-1, +1],

[r"$-1$", r"$+1$"])

t=2 * np.pi/3

plt.plot([t, t], [0, np.cos(t)],

颜色="蓝色",线宽=1.5,线型="--")

plt.scatter([t, ], [np.cos(t), ], 50, color="蓝色")

plt.annotate(r"$sin(frac{2pi}{3})=frac{sqrt{3}}{2}$",

xy=(t, np.sin(t)), xycoords="数据",

xytext=(+10, +30), textcoords="偏移点", fontsize=16,

arrowprops=dict(arrowstyle="-",connectionstyle="arc3,rad=.2"))

plt.plot([t, t], [0, np.sin(t)],

颜色="红色",线宽=1.5,线型="--")

plt.scatter([t, ], [np.sin(t), ], 50, color="red")

plt.annotate(r"$cos(frac{2pi}{3})=-frac{1}{2}$",

xy=(t, np.cos(t)), xycoords="数据",

xytext=(-90, -50), textcoords="偏移点", fontsize=16,

arrowprops=dict(arrowstyle="-",connectionstyle="arc3,rad=.2"))

plt.legend(loc="左上",frameon=False)

plt.show()

三维图形绘制方法

三维图形绘制绘制三维图像主要通过mplot3d模块实现。不过,使用Matplotlib绘制三维图像实际上是显示在二维画布上,所以一般在绘制三维图像时,还需要加载pyplot模块。

mplot3d模块主要包括4大类,分别是:

mpl_toolkits.mplot3d.axes3d()

mpl_toolkits.mplot3d.axis3d()

mpl_toolkits.mplot3d.art3d()

mpl_toolkits.mplot3d.proj3d()

axes3d() 下面主要包含实现绘图的各种类和方法。 axis3d()主要包括坐标轴相关的类和方法。 art3d() 包含转换2D 图像并将其用于3D 绘图的类和方法。 proj3d()包含一些零碎的类和方法,比如计算三维向量的长度。

一般情况下,我们用的最多的是mpl_toolkits.mplot3d.axes3d()下的mpl_toolkits.mplot3d.axes3d.Axes3D()类,Axes3D()下有绘制不同类型3D图形的方法。

三维散点图的绘制

将numpy 导入为np

从mpl_toolkits.mplot3d 导入Axes3D

将matplotlib.pyplot 导入为plt

%matplotlib 内联

# x,y,z都是100个随机数

x=np.random.normal(0, 1, 100)

y=np.random.normal(0, 1, 100)

z=np.random.normal(0, 1, 100)

图=plt.figure()

ax=Axes3D(图)

ax.scatter(x, y, z) 三维图形和二维图形在数据上的区别在于,三维图形有一组附加的数据,用于测量附加维度。

当我们在桌面环境中绘制3D图形时,我们可以将鼠标拖动到任意角度,但是在Jupyter Notebook环境中不支持这一点。仅显示三维图形的默认透视静态图像。

折线图与散点图类似,需要输入三个坐标值:x、y、zx、y、z。

# 生成数据

x=np.linspace(-6 * np.pi, 6 * np.pi, 1000)

y=np.sin(x)

z=np.cos(x)

#创建3D图形对象

图=plt.figure()

ax=Axes3D(图)

ax.plot(x, y, z) 绘制三维直方图

#创建3D图形对象

图=plt.figure()

ax=Axes3D(图)

# 生成数据并绘图

x=[0, 1, 2, 3, 4, 5, 6]

对于我在x:

y=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

z=绝对值(np.random.normal(1, 10, 10))

ax.bar(y, z, i, zdir="y", color=["r", "g", "b", "y"]) 对数据进行矩阵处理。事实上,它与绘制二维等值线图非常相似,只不过多了一个维度。

#创建3D图形对象

图=plt.figure()

ax=Axes3D(图)

# 生成数据

X=np.arange(-2, 2, 0.1)

Y=np.arange(-2, 2, 0.1)

X, Y=np.meshgrid(X, Y)

Z=np.sqrt(X ** 2 + Y ** 2)

# 绘制曲面图并使用cmap进行着色

ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)cmap=plt.cm.winter 表示使用冬季配色方案。除了通过Axes3D()声明三维图形外,我们还可以通过projection="3d"参数声明3D图形。

图=plt.figure(figsize=(14, 6))

# 通过projection="3d"语句绘制3D图形

ax=Fig.add_subplot(1, 2, 1, 投影="3d")

ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)三维混合图混合图就是在一张图中绘制两种不同类型的图。绘制混合图一般有一个前提条件,即两种不同类型的图的范围大致相同,否则会出现严重的比例不协调,使混合图失去意义。

#创建3D图形对象

图=plt.figure()

ax=Axes3D(图)

# 生成数据并绘制图表1

x1=np.linspace(-3 * np.pi, 3 * np.pi, 500)

y1=np.sin(x1)

ax.plot(x1, y1, zs=0, c="红色")

# 生成数据并绘制图表2

x2=np.random.normal(0, 1, 100)

y2=np.random.normal(0, 1, 100)

z2=np.random.normal(0, 1, 100)

ax.scatter(x2, y2, z2)三维子图可以将二维图像和三维图像一起绘制,或者将多个三维图像一起绘制。

# 创建1 个画布

图=plt.figure(figsize=(8, 4))

#将子图像1添加到画布上

ax1=Fig.add_subplot(1, 2, 1, 投影="3d")

# 生成子图1数据

x=np.linspace(-6 * np.pi, 6 * np.pi, 1000)

y=np.sin(x)

z=np.cos(x)

# 绘制第一张图

ax1.plot(x, y, z)

# 将子图像2 添加到画布

ax2=Fig.add_subplot(1, 2, 2, 投影="3d")

# 生成子图2数据

X=np.arange(-2, 2, 0.1)

Y=np.arange(-2, 2, 0.1)

X, Y=np.meshgrid(X, Y)

Z=np.sqrt(X ** 2 + Y ** 2)

好了,文章到此结束,希望可以帮助到大家。

用户评论

夏至离别

想学习数据可视化,这个好像是个很好的入门教程!

    有6位网友表示赞同!

迁心

我一直觉得 Matplotlib 绘制图表太难了,这篇文章能帮我捋清思路吗?

    有14位网友表示赞同!

来瓶年的冰泉

准备开始学习 Python 的数据分析,Matplotlib 是一个必备工具吧!

    有19位网友表示赞同!

几妆痕

看到文章标题就很兴奋,终于有个基础入门教程了!别忘了后续更新高级技巧啊~

    有17位网友表示赞同!

墨染年华

对于刚接触 Matplotlib 的人来说,这篇文章非常有帮助!

    有20位网友表示赞同!

一纸愁肠。

Matplotlib 画的图真美观,学习起来感觉很有成就感。

    有6位网友表示赞同!

眉黛如画

之前用过一些其他繪圖工具,希望能从这里了解到 Matplotlib 的优缺点。

    有5位网友表示赞同!

一点一点把你清空

要开始做数据可视化项目了,这个教程正好派上用场!

    有6位网友表示赞同!

她的风骚姿势我学不来

希望这篇文章能够详细介绍各种基础图表类型。

    有9位网友表示赞同!

相知相惜

期待接下来的文章分享更具体的绘图案例和技巧!

    有19位网友表示赞同!

红尘滚滚

感觉学习数据绘图很有趣,希望能掌握 Matplotlib 的基本操作。

    有5位网友表示赞同!

淡抹丶悲伤

最近在玩数据分析,好像需要一个好的繪圖工具,Matplotlib 听起来不错。

    有19位网友表示赞同!

入骨相思

以前没怎么接触过 Python 的绘图库,这篇文章可以让我入门吗?

    有7位网友表示赞同!

孤城暮雨

喜欢文章的标题,简洁明了直接点出我的需求!

    有7位网友表示赞同!

陌離

Matplotlib 在数据科学领域应该非常常用吧?这个教程能帮助我了解它的应用场景吗?

    有7位网友表示赞同!

留我一人

如果把 Matplotlib 的绘图功能结合到机器学习中,效果会更好?

    有17位网友表示赞同!

可儿

我很想用代码生成各种类型的图表,Matplotlib 应该很好用!

    有12位网友表示赞同!

凝残月

打算把数据可视化项目交给朋友帮忙,希望能帮他推荐这篇文章!

    有11位网友表示赞同!

来自火星球的我

感觉 Matplotlib 的绘图功能很强大,一定要好好学!

    有16位网友表示赞同!

【Matplotlib数据绘图入门教程:基础操作指南】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活