【python】绘制玫瑰花-CSDN博客

140 阅读1分钟

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# x为玫瑰图案的径向分布,t为角度分布
x_values = np.linspace(0, 1, num=30)
theta = np.linspace(0, 1, num=1200) * 50 * np.pi - 4 * np.pi
x_values, theta = np.meshgrid(x_values, theta)

# p为角度函数,控制玫瑰图案的形态
p = 0.5 * np.pi * np.exp(-theta / (8 * np.pi))

# change为微小的扰动函数,增加图案的复杂性
change = np.sin(20 * theta) / 50

# u为径向函数,控制图案的半径变化
u = 1 - (1 - np.mod(3.3 * theta, 2 * np.pi) / np.pi) ** 4 / 2 + change

# y为径向分布函数
y_values = 2 * (x_values ** 2 - x_values) ** 2 * np.sin(p)

# r为最终的径向分布,h为高度分布
r = u * (x_values * np.sin(p) + y_values * np.cos(p)) * 1.5
h = u * (x_values * np.cos(p) - y_values * np.sin(p))
# RdPu_r为红色,Blues_r为蓝色
ax.plot_surface(r * np.cos(theta), r * np.sin(theta), h, rstride=1, cstride=1, cmap=plt.cm.RdPu_r)

# 隐藏网格
ax.grid(False)

# 隐藏工具栏
plt.axis('off')

# 显示
plt.show()

注意:需要安装numpy和matplotlib库

pip install numpy -i pypi.tuna.tsinghua.edu.cn/simple

pip install matplotlib -i pypi.tuna.tsinghua.edu.cn/simple