400-616-5551

您所在位置: 首页> 学习课程> python培训班 | Python进阶之Matplotlib入门

python培训班 | Python进阶之Matplotlib入门

发布百知教育 来源:学习课程 2019-11-27

Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技能。对于这个教程,大家最好亲自码一遍代码,这样可以更有收获。


学完这课你将会:


1、掌握Matplotlib中的3D画图功能;

2、学会使用text函数玩出手稿效果;



3D图


为了画3D图,我们除了导入maplotlib.pyplot模块,我们还需要导入一个叫做mpl_toolkits的模块:


import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D


然后我们需要用figure()函数定义一个窗口,给它装备好一个3D坐标:


fig = plt.figure()

ax = Axes3D(fig)


可以获得如下效果图:


python培训



这个是3D坐标轴,可以通过鼠标旋转观察到不同的角度,大家把代码输入进去亲自感受,手感非常好。


现在我们要输入数据了,因为是一个3D的图,所以我们要X,Y,Z三个维度的坐标。我们先通过meshgrid函数建立一个二维平面网格,然后直接用函数映射的方法或者Z轴坐标。


一切就绪后,就可以plot_surface的方式把3D曲面图给画出来:


import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()ax = Axes3D(fig)X = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = np.sin(R)
ax.plot_surface(X, Y, Z, rstride=6, cstride=6, cmap='hot')
plt.show()


运行结果:


10.png



在这个函数中,首先输入的是X,Y,Z三个维度,没毛病。然后是rstride以及cstride,它们分别控制row和column的密度。这里的密度可以理解为用多少条线来画3D的图,比如我们将rstride和cstride设置成6,看一下效果:


python培训班


瞬间拉跨,不好看。


手稿图


前面在介绍如何给图片添加文字的时候,引入了text函数。现在我们要利用这个函数,玩一个花样出来:


python培训班


代码如下:


import numpy as npimport matplotlib.pyplot as plt
eqs = []eqs.append((r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{ U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2} }{U^{0\beta}_{\rho_1 \sigma_2}}\right]$"))eqs.append((r"$\frac{d\rho}{d t} + \rho \vec{v}\cdot\nabla\vec{v} = -\nabla p + \mu\nabla^2 \vec{v} + \rho \vec{g}$"))eqs.append((r"$\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}$"))eqs.append((r"$E = mc^2 = \sqrt{{m_0}^2c^4 + p^2c^2}$"))eqs.append((r"$F_G = G\frac{m_1m_2}{r^2}$"))
plt.axes([0.025,0.025,0.95,0.95])
for i in range(24):    index = np.random.randint(0,len(eqs))    eq = eqs[index]    size = np.random.uniform(12,32)    x,y = np.random.uniform(0,1,2)    alpha = np.random.uniform(0.25,.75)    plt.text(x, y, eq, ha='center', va='center', color="#11557c", alpha=alpha,             transform=plt.gca().transAxes, fontsize=size, clip_on=True)
plt.xticks([]), plt.yticks([])# savefig('../figures/text_ex.png',dpi=48)plt.show()


我们一共写了五个公式,但是图上“这么多”公式的效果是怎么来的呢?关键点就在于“随机”,有位置的随机,有大小的随机,还有透明度的随机。综合效果出来就感觉有很多不同的公式一样。


python培训班:http://www.baizhiedu.com/python2019


上一篇:java培训班 | Java线程池原理分析与使用场景

下一篇:java培训班 | SOLID 设计原则,Java实例讲解

相关推荐

关闭

立即申请

www.baizhiedu.com