求大神告知,怎么用matplot 画出五角星的平面,像是图片中圆形这样,由均匀分布的散点构成,但是形状是五角星型的。用其他包画也可以,主要是需要各个散点的坐标数据,用来做多目标优化测试。拜托啦,菜鸟感激不尽,实在查不到用什么公式表示x,y,z轴(Z轴可以不用管)。
3条回答 默认 最新
- 宁缺灬 2020-09-18 15:06关注
构建五个外点和五个内点,向内延伸就好。看了你的图例,越外圈,精度越低,那么效果是这样
以下是代码
# -*- coding: utf-8 -*- """ Created on Thu Sep 18 10:55:00 2020 @author: Eikoh """ import numpy as np import math import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程 r = 100 #五角星顶点距离中心距离 v = 4 # l = math.floor(r / v) parr = [0,1,2,3,4] for j in range(l): data = [[],[],[]] #5个外点 5个内点 for i in range(len(parr)): data[0].append(math.cos(math.pi * 0.4 * parr[i]) * r) data[1].append(math.sin(math.pi * 0.4 * parr[i]) * r) data[2].append(1) R = r * math.sin(math.pi * 0.1)/math.sin(math.pi * 0.2) data[0].append(math.cos(math.pi * 0.4 * parr[i] + math.pi * 0.2) * R) data[1].append(math.sin(math.pi * 0.4 * parr[i] + math.pi * 0.2) * R) data[2].append(1) r = r - v if r <= 0: break tdt = [[],[],[]] #边 散点 for i in range(len(data[0])): cur = i if i == len(data[0]) - 1: nex = 0 else: nex = i + 1 k = (data[1][nex] - data[1][cur]) / (data[0][nex] - data[0][cur]) b = data[1][nex] - k * data[0][nex] xs = np.arange(data[0][cur],data[0][nex],(data[0][nex] - data[0][cur]) / 20) #每条边由20个散点组成 xs = xs[1:len(xs)] xy = [] for j in range(len(xs)): tdt[0].append(xs[j]) tdt[1].append(k * xs[j] + b) tdt[2].append(1) x, y, z = data[0],data[1],data[2] #r间距下的10个顶点 ax.scatter(x[:len(x)], y[:len(y)], z[:len(z)], c='b',s=1) # 绘制数据点 x, y, z = tdt[0],tdt[1],tdt[2] #r间距下的所有边 ax.scatter(x[:len(x)], y[:len(y)], z[:len(z)], c='b',s=1) # 绘制数据点 ax.set_zlabel('Z') # 坐标轴 ax.set_ylabel('Y') ax.set_xlabel('X') plt.show()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配