奇技淫巧 - Python绘制各种简单优美曲线

开发 后端
matplotlib是著名的Python绘图库,它提供了一整套绘图API,十分适合交互式绘图。,解决数据分析和可视化问题,其实也是Python的拿手好戏。另外,在数据处理过程中会用到numpy。

 matplotlib是著名的Python绘图库,它提供了一整套绘图API,十分适合交互式绘图。,解决数据分析和可视化问题,其实也是Python的拿手好戏。另外,在数据处理过程中会用到numpy。

例如,画出指定区间的一个多项式函数:

Python 代码如下: 

  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3. X = np.linspace(-4, 4, 1024)  
  4. Y = .25 * (X + 4.) * (X + 1.) * (X - 2.)  
  5. plt.title('$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$')  
  6. plt.plot(X, Y, c = 'g' 
  7. plt.show() 

通过numpy的linspace方法来确定横坐标x的取值范围,列出方程,然后调用matplotlib的pyplot画出函数曲线即可。numpy 是一个用python实现的科学计算包,包括一个强大的N维数组对象Array和成熟的函数库,有用于整合C/C++和Fortran代码的工具包,提供了实用的线性代数、傅里叶变换和随机数生成函数等工具,可以理解成Matlab。

哪些看似抽象的数学公式,实际上是自己不知道她们的应用场景而已。

Python代码如下: 

  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3. X = np.linspace(0, 2 * np.pi, 100)  
  4. YSinValues = np.sin(X)  
  5. YCosValues = np.cos(X)  
  6. plt.plot(X, YSinValues)  
  7. plt.plot(X, YCosValues)  
  8. plt.show() 

Matplotlib 是一个 Python 的 2D绘图库,甚至可以生成出版质量级别的图形。

对于那些正态分布而言,Python 画起来也就相当简单了: 

  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3. def pdf(X, mu, sigma):  
  4.    a = 1. / (sigma * np.sqrt(2. * np.pi))  
  5.    b = -1. / (2. * sigma ** 2)  
  6.    return a * np.exp(b * (X - mu) ** 2)  
  7. X = np.linspace(-6, 6, 1000)  
  8. for i in range(3):  
  9.    samples = np.random.standard_normal(10)  
  10.    mu, sigma = np.mean(samples), np.std(samples)  
  11.    plt.plot(X, pdf(X, mu, sigma), color = '.66' 
  12. plt.plot(X, pdf(X, 0., 1.), color = 'b' 
  13. plt.show() 

为了不显得单调,这里多画了几条曲线。只要算出方差和均值,从excel中读出哪些数值就可以拟合正态分布了。

在直角坐标系中,爱心线的方程的python 表达为:x** 2+ y** 2 + a * x= a * sqrt(x** 2+y** 2) 和 x** 2+ y** 2 - a * x= a * sqrt(x** 2+y** 2)通过x 来求对应的y值很麻烦,就像软件设计中的“万能层”那样,可以采用参数方程来表示:

x=a*(2*cos(t)-cos(2*t))

y=a*(2*sin(t)-sin(2*t))

具体的Python代码如下: 

  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3. a = 1  
  4. t = np.linspace(0 , 2 * np.pi, 1024)  
  5. X = a*(2*np.cos(t)-np.cos(2*t))  
  6. Y = a*(2*np.sin(t)-np.sin(2*t))  
  7. plt.plot(Y, X,color='r' 
  8. plt.show() 

代表爱心的心形线来了:

但这不是六行代码呀?也不是r=a(1-sinθ)呀?的确如此,那是极坐标系,python 的matplotlib同样支持极坐标系的,爱心线的六行pyton代码如下:

这样,得到如下图像:

心形线确实是爱心满满,如果融入了忧伤会是怎样呢?

这样就得到了另一个爱心线:

网络上还有关于爱心线的各种漂亮实现,也充满了各种各样的情绪,但对于每一种,基本上都可以用python 相对简洁的实现。

实际上,绘图很简单,难的是那些曲线方程的表达以及实际的应用场景需求,比如螺旋线。

作为数据分析乃至大数据处理的最后一个环节,就是所谓洞见的可视化,Python 可以说是其中的一个简单实用的工具。 

 

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2017-08-18 13:30:01

前端CSS布局奇技

2020-05-20 19:38:11

前端js调试工具

2022-01-07 14:50:46

VS CodeLinux代码

2021-04-12 06:09:38

Spring扩展点应用

2023-06-26 08:05:36

2021-03-30 07:47:46

SVG 滤镜 CSS技巧

2017-10-24 13:42:55

流氓App安卓Google

2022-09-30 12:55:14

Linux笔记

2023-09-19 08:03:50

rebase​merge

2022-04-21 15:00:53

LinuxShell

2021-06-07 12:20:14

LinuxASCII命令

2022-04-24 16:00:15

LinuxLinux命令ls命令

2021-05-18 13:05:31

LinuxRust复用器

2021-02-25 09:19:11

LinuxAppimage命令

2015-04-13 13:21:45

JavaScript JavaScript

2019-04-25 13:10:04

Java 8Stream API编程语言

2021-05-07 13:56:13

Linux器监视服务器

2021-05-31 11:45:37

LinuxRustShell

2019-05-28 14:33:07

Javascript运算符前端

2022-01-06 08:58:49

代码
点赞
收藏

51CTO技术栈公众号