Home  >  Article  >  Backend Development  >  Example of how to draw a heart using python

Example of how to draw a heart using python

高洛峰
高洛峰Original
2017-02-03 16:02:461904browse

Preface

Python generally uses Matplotlib to produce statistical graphics. In its own words, it 'makes simple things simple and makes complex things possible'. You can use it to create line charts, histograms, bar charts, scatter charts, pie charts, spectrum charts, and other statistical graphics you can think of and unexpected. These graphics can be exported to a variety of publication-quality formats. In addition, it is really convenient to use it in combination with ipython. Anyone who uses it knows! This article will introduce the use of matplotlib in python to draw a heart. Friends who are interested can take a look below.

Install matplotlib

First, you must install matplotlib

pip install matplotlib

Windows users can download and install it from the official website. The official website saw that the author of matpltlib, John Hunter (1968-2012), had just passed away. I would like to thank him for creating such a powerful drawing tool.

Up code

#!/usr/bin/env python3
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 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)

Summary

The above is the entire content of this article. I hope that the content of this article can bring some help to everyone learning or using python. If If you have any questions, you can leave a message to communicate.

For more examples of how to draw a heart using python, please pay attention to the PHP Chinese website for related articles!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn