`
xuanzhui
  • 浏览: 199540 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

通过matplotlib绘制心形

阅读更多

相关工具库很多,都是科学计算的东西:numpy、scipy、pandas、matplotlib、sympy、mayavi2

 

SciPy官网的介绍

http://www.scipy.org/getting-started.html

  • NumPy's array type augments the Python language with an efficient data structure useful for numerical work, e.g., manipulating matrices. NumPy also provides basic numerical routines, such as tools for finding eigenvectors.
  • SciPy contains additional routines needed in scientific work: for example, routines for computing integrals numerically, solving differential equations, optimization, and sparse matrices.
  • The matplotlib module produces high quality plots. With it you can turn your data or your models into figures for presentations or articles. No need to do the numerical work in one program, save the data, and plot it with another program.

 

简要的说:

numpy--定义了数值数组和矩阵类型和它们的基本运算的语言扩展

scipy--使用numpy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展

pandas--对numpy做了进一步封装

matplotlib--python的2D绘图库,提供了类MATLAB的API

mayavi2--python的3D绘图库 

sympy---python符号计算库

 

对sympy的解释比较抽象,运行实例感受一下

>>> import math,numpy,sympy
>>> math.sqrt(8)
2.8284271247461903
>>> math.sqrt(8) * math.sqrt(2)
4.000000000000001
>>> numpy.sqrt(8)
2.8284271247461903
>>> numpy.sqrt(8) * numpy.sqrt(2)
4.0000000000000009
>>> sympy.sqrt(8)
2*sqrt(2)
>>> sympy.sqrt(8) * sympy.sqrt(2)
4

 

 

以下内容只需要安装numpy、matplotlib和sympy

Windows安装numpy比较麻烦,有时可能遇到各种错,

可以直接去 http://www.lfd.uci.edu/~gohlke/pythonlibs/

搜索numpy,下载对应的系统预编译版本

下载完成用如下类似命令安装即可

pip install "numpy-1.10.4+mkl-cp35-none-win_amd64.whl"

 

 

1. 心形的公式

http://www.mathematische-basteleien.de/heart.htm

http://mathworld.wolfram.com/HeartCurve.html

http://mathworld.wolfram.com/HeartSurface.html




 

 

2. 绘制2D心形

1) 通过matplotlib

import matplotlib.pyplot as plt
import numpy as np

# -pi ~ pi, split 256
t = np.linspace(-np.pi, np.pi, 256, endpoint=True)
X = 16 * (np.sin(t))**3
Y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)

# plot at line1 column1
plt.subplot(121)

plt.plot(X, Y)

# -3 ~ 3, step 0.02
x = y = np.arange(-3.0, 3.0, 0.02)
X, Y = np.meshgrid(x, y)
Z = (X**2 + Y**2 - 1)**3 - X**2 * Y**3

# plot at line1 column2
plt.subplot(122)

plt.contour(X, Y, Z)
plt.colorbar()

plt.show()

 

2) 通过sympy

画等式特别方便

http://docs.sympy.org/latest/modules/plotting.html

>>> from sympy import symbols,plot_implicit
>>> x,y = symbols('x y')
>>> plot_implicit((x**2 + y**2 - 1)**3 - x**2 * y**3)

 

 

3. 绘制3D图形

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

def heart_3d(x,y,z):
   return (x**2 + (9/4) * y**2 + z**2 - 1)**3 - x**2 * z**3 - (9/80) * y**2 * z**3

def heart_3d_2(x,y,z):
   return (2 * x**2 + 2 * y**2 + z**2 - 1)**3 - 0.1 * x**2 * z**3 - y**2 * z**3

def plot_implicit(fn, bbox=(-1.5, 1.5)):
    ''' create a plot of an implicit function
    fn  ...implicit function (plot where fn==0)
    bbox ..the x,y,and z limits of plotted interval'''
    xmin, xmax, ymin, ymax, zmin, zmax = bbox*3
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    A = np.linspace(xmin, xmax, 100) # resolution of the contour
    B = np.linspace(xmin, xmax, 40) # number of slices
    A1, A2 = np.meshgrid(A, A) # grid on which the contour is plotted

    for z in B: # plot contours in the XY plane
        X, Y = A1, A2
        Z = fn(X, Y, z)
        cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))
        # [z] defines the only level to plot
        # for this contour for this value of z

    for y in B:  # plot contours in the XZ plane
        X, Z = A1, A2
        Y = fn(X, y, Z)
        cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))

    for x in B: # plot contours in the YZ plane
        Y, Z = A1, A2
        X = fn(x, Y, Z)
        cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',))

    # must set plot limits because the contour will likely extend
    # way beyond the displayed level.  Otherwise matplotlib extends the plot limits
    # to encompass all values in the contour.
    ax.set_zlim3d(zmin, zmax)
    ax.set_xlim3d(xmin, xmax)
    ax.set_ylim3d(ymin, ymax)

    plt.show()

if __name__ == '__main__':
    plot_implicit(heart_3d)

 

 

4. 最后通过turtle动态画一个心形

from turtle import *
def curvemove():
    for i in range(100):
        right(2)
        forward(2)

color('red','pink')        

begin_fill()

left(140)

forward(111.65)

curvemove()

left(120)

curvemove()

forward(111.65)

end_fill()

done()

 

refer

Plotting implicit equations in 3d

how to draw a heart with pylab

Is it possible to plot implicit equations using Matplotlib

Is it possible to plot implicit 3d equation using sympy

How can I draw a heart using Python

 

 

 

 

  • 大小: 4.9 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    爱心源码 python matplotlib numpy 绘制心形 保存为png格式

    本项目结合了这两个库,使用numpy的函数来生成数据,然后利用matplotlib绘制出一个心形图案,并最终将其保存为PNG图像文件。下面将详细解释这个过程中的关键知识点。 首先,`np.linspace`是numpy库中的一个函数,它...

    教你用python画不同类型的心形图虏获芳心,值得收藏!!.pdf

    Python绘制心形图教程 本资源为Python绘制心形图的教程,旨在帮助读者使用Python语言绘制不同类型的心形图,实现爱心表白。...通过学习该教程,读者可以掌握绘制心形图的技术,实现创新和个性化的爱心表白。

    PYTHON 小项目:利用matplotlib库绘制的爱心代码

    运行这个文件,你将在屏幕上看到一个由matplotlib绘制的红色爱心图案。 这个小项目不仅展示了matplotlib的基本用法,还体现了Python的简洁性和易读性。通过实践这样的项目,你可以更好地理解matplotlib库,并能够...

    Python绘制心形曲线

    总之,Python绘制心形曲线涉及了基本的数学公式、参数化绘图以及matplotlib库的使用。通过学习和实践这个话题,你可以深入了解Python的图形绘制能力,这在数据分析、科学可视化和教学等领域都有广泛的应用。

    根据心形方程用代码绘制出图形

    4. **代码实现**:以下是一个简单的 Python 代码示例,展示了如何用 Matplotlib 绘制心形图形: ```python import numpy as np import matplotlib.pyplot as plt # 定义角度范围 theta = np.linspace(0, 2*np.pi, ...

    使用Matplotlib库,通过python画爱心

    绘制心形曲线:使用plot函数绘制心形曲线,并使用fill函数填充心形区域。 美化图形:去掉坐标轴,使图形看起来更像一个心形,而不是一个带坐标轴的图。 显示图形:使用show函数显示绘制的心形图形。

    使用 Python 和 Matplotlib 来创建一个与 520 相关的主题图像

    这个代码创建了一个心形,并在心形的中心添加了 "520" 字样。...绘制心形:使用 Matplotlib 绘制红色的心形,并填充颜色。 添加文字:在心形的中心添加 "520" 字样。 设置图形:调整坐标轴的范围并隐藏坐标轴。

    520-简易爱心绘制代码

    ### 一、使用Matplotlib绘制心形图形 #### 1.1 心形方程 在数学上,心形可以通过以下方程表示: \[ (x^2 + y^2 - 1)^3 - x^2y^3 \leq 0 \] 其中,\(x\) 和 \(y\) 是直角坐标系中的两个变量。当该不等式成立时,对应...

    MATLAB、Python和Java中如何生成心形代码

    % 绘制心形 Python代码 Python是一种面向对象的解释型语言,广泛应用于数据科学、机器学习等领域。以下是一个简单的Python代码片段,用于生成一个心形图案: Python import numpy as np import matplotlib.pyplot...

    77433659HappyVDay_心形线_

    在极坐标系中,心形线可以用ρ关于θ的函数来表示,这使得在极坐标系下解析和绘制心形线变得更为直观。在圆锥曲线的分类中,心形线属于阿基米德螺线的一种特殊情况。 总结起来,心形线是一种具有浪漫象征意义的数学...

    python读取excel数据.doc

    2. **绘图过程:** 通过一系列移动和转向命令来绘制心形,最后使用 `begin_fill()` 和 `end_fill()` 方法为心形填色。 3. **交互性:** Turtle 模块支持用户交互,如通过键盘控制图形移动等。 以上三种方法各有特点...

    PythonPainting_painting_python_attackw1p_

    `PythonPainting_painting_python_attackw1p_`这个项目似乎是一个关于使用Python进行图形绘制的学习资源,特别强调了绘制心形和小猪佩奇等图案。下面我们将深入探讨这些知识点。 1. **Tkinter**:Tkinter是Python的...

    用python绘制爱心代码.docx

    #### 四、使用matplotlib绘制爱心 对于更复杂的图形需求,可以使用`matplotlib`库。`matplotlib`是一个强大的数据可视化工具,它提供了丰富的自定义选项。下面是使用`matplotlib`绘制爱心的步骤: 1. **导入所需库...

    Python-python和R如何画Bonne投影的心形地图

    最后,我们可以加载地理边界数据(例如,从`Natural Earth`获取),并用`scatter`函数绘制心形点。以下是一个基本示例: ```python import matplotlib.pyplot as plt import cartopy.crs as ccrs from cartopy....

    基于python的爱心代码高级.doc

    这段代码在绘制心形之前先在屏幕上打印出“I Love You”,并通过`time.sleep()`控制显示时间。 #### 四、总结 通过本文的介绍,我们不仅学习了如何使用Python语言绘制不同形式的心形图案,还了解了一些更加高级和...

    心形函数鉴赏

    本文将深入探讨如何使用函数来绘制心形,并介绍一些常见的2维心形函数。 心形图案最早可以追溯到17世纪的欧洲,当时数学家们开始探索用代数方程来表示这种形状。在计算机科学中,心形函数通常基于极坐标或者笛卡尔...

    爱心源码-通过Python画一颗跳动的心

    `heart.py` 文件可能包含了绘制心形图形的函数。在Python中,可以使用matplotlib的`plot`或`fill`等方法来绘制形状。通过控制x和y坐标,可以构建出心形的轮廓。例如,开发者可能定义了一组坐标点,这些点连接起来...

    1探索心形图像的生成(含详细Python代码与注释)

    4. 绘制心形:使用matplotlib的plot函数,将x和对应的y1、y2值分别绘制出来。 ```python plt.plot(x, y1, color='r') plt.plot(x, y2, color='r') ``` 这里,'r'代表红色。 5. 填充颜色:使用fill_between函数在两...

    表白python画出心心相印爱心代码

    接下来,代码使用了一个循环,通过改变turtle的方向和前进的距离来绘制心形。每个心形由两个相似的弧线组成,每个弧线通过向左转144度和向前移动200像素实现。最后,turtle被隐藏,图形窗口保持打开状态。 `使用...

    用Python绘制高级爱心图形.docx

    3. **绘制立体图形**:使用`plot_surface`方法绘制心形。 ```python import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_...

Global site tag (gtag.js) - Google Analytics