我找到了一个解决办法,也许对其他人有用。在from mpl_toolkits.mplot3d import Axes3D

from matplotlib import cm

import matplotlib.pyplot as plt

import numpy as np

import colorsys

from matplotlib.tri import Triangulation

from mpl_toolkits.mplot3d.art3d import Poly3DCollection

n_angles = 80

n_radii = 20

# An array of radii

# Does not include radius r=0, this is to eliminate duplicate points

radii = np.linspace(0.0, 0.5, n_radii)

# An array of angles

angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)

# Repeat all angles for each radius

angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)

# Convert polar (radii, angles) coords to cartesian (x, y) coords

# (0, 0) is added here. There are no duplicate points in the (x, y) plane

x = np.append(0, (radii*np.cos(angles)).flatten())

y = np.append(0, (radii*np.sin(angles)).flatten())

# Pringle surface

z = 1+-np.sqrt(x**2+y**2)*2

print(x.shape, y.shape, angles.shape, radii.shape, z.shape)

# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!

tri = Triangulation(x, y)

triangle_vertices = np.array([np.array([[x[T[0]], y[T[0]], z[T[0]]],

[x[T[1]], y[T[1]], z[T[1]]],

[x[T[2]], y[T[2]], z[T[2]]]]) for T in tri.triangles])

x2 = np.append(0, (radii*np.cos(angles)).flatten())

y2 = np.append(0, (radii*np.sin(angles)).flatten())

# Pringle surface

z2 = -1+np.sqrt(x**2+y**2)*2

# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!

tri2 = Triangulation(x2, y2)

triangle_vertices2 = np.array([np.array([[x2[T[0]], y2[T[0]], z2[T[0]]],

[x2[T[1]], y2[T[1]], z2[T[1]]],

[x2[T[2]], y2[T[2]], z2[T[2]]]]) for T in tri2.triangles])

triangle_vertices = np.concatenate([triangle_vertices, triangle_vertices2])

midpoints = np.average(triangle_vertices, axis=1)

def find_color_for_point(pt):

c_x, c_y, c_z = pt

angle = np.arctan2(c_x, c_y)*180/np.pi

if (angle < 0):

angle = angle + 360

if c_z < 0:

l = 0.5 - abs(c_z)/2

#l=0

if c_z == 0:

l = 0.5

if c_z > 0:

l = (1 - (1-c_z)/2)

if c_z > 0.97:

l = (1 - (1-c_z)/2)

col = colorsys.hls_to_rgb(angle/360, l, 1)

return col

facecolors = [find_color_for_point(pt) for pt in midpoints] # smooth gradient

# facecolors = [np.random.random(3) for pt in midpoints] # random colors

coll = Poly3DCollection(

triangle_vertices, facecolors=facecolors, edgecolors=None)

fig = plt.figure()

ax = fig.gca(projection='3d')

ax.add_collection(coll)

ax.set_xlim(-1, 1)

ax.set_ylim(-1, 1)

ax.set_zlim(-1, 1)

ax.elev = 50

plt.show()

python求圆锥体的表面积_使用matplotlib绘制圆锥的三维图形相关推荐

  1. 用python画数学函数图像教程_使用Matplotlib 绘制精美的数学图形例子

    一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...

  2. 如何用python画数学图案_使用Matplotlib 绘制精美的数学图形例子

    一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...

  3. Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图、折线图、标注文字、图例、三维坐标)之详细攻略

    Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图.折线图.标注文字.图例.三维坐标)之详细攻略 目录

  4. 怎么用python画sin函数图像_Python3使用Matplotlib 绘制精美的数学函数图形

    记录Python3使用Matplotlib 绘制精美的数学图形. 一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import ma ...

  5. python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』

    python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...

  6. python求素数的函数_如何用python求素数

    如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...

  7. python 四象限图_使用matplotlib绘制四象限图

    今天简单研究了一下在python中绘制四象限图的问题,结合前人相关研究成果,绘制出的图效果如下: 绘制这种图的要点是:自己构造新的x轴和y轴,不要用散点图默认的横纵坐标系,并且不要显示原来的横纵坐标系 ...

  8. python绘制等值线图_使用matplotlib绘制等值线图

    等值线图 等值线图或等高线图在科学界很常用.这种可视化方法用由一圈圈封闭的曲线组成的等值线图表示三维结构的表面,其中封闭的曲线表示的是一个个处于同一层级或z值相同的数据点. 虽然等值线图看上去结构很复 ...

  9. Python dataframe绘制饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...

    从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...

最新文章

  1. 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
  2. 智能车竞赛技术报告 | 单车拉力组 - 长春理工大学- 追风零队 2021
  3. 鸿雁电器oa系统中决策支持模块效果
  4. HighNewTech:70后、80后、90后、95后职场人大数据调查(有趣的五个结论)——源于猎聘网
  5. 用于Web开发的8 个最好的跨平台编辑器
  6. php.ini 配置详解
  7. Gcd HDU - 6545 (基础数论)
  8. Vue之$nextTick属性
  9. apachejmeter_java源码_自定义编写jmeter的Java测试代码
  10. event_base_loop
  11. javascript案例大全_JavaScript 中文资源大全,你值得拥有
  12. C# CharacterToBinary 将类似2进制字符串 10010110111 转换为数值型源码
  13. asp.net—工厂模式
  14. 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
  15. 【人机】确认框中的“取消/确定”要如何设计呢?
  16. githug关卡小游戏,练习git
  17. Java之png图片工具类
  18. Linux系统下的hadoop常用命令
  19. java 包 重名,Java-java 包重名的问题如何解决?
  20. 会当凌绝顶-----盘赔之我见(四)

热门文章

  1. lda 可以处理中文_自然语言处理——使用词向量(腾讯词向量)
  2. NR CSI(三) CQI
  3. word2016加载MathType打开时显示“安全警告,宏已被禁用”解决办法
  4. Jsrpc学习——网易云热评加密函数逆向
  5. CityEngine制作玻璃材质反光效果
  6. 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》
  7. hibernate lazy属性参数说明
  8. Https接口异常javax.net.ssl.SSLHandshakeException问题
  9. ffmpeg录制视频时添加时间水印
  10. 快速排序——单边循环实现方式