matlab如何获得三维坐标图的视角
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab如何获得三维坐标图的视角相关的知识,希望对你有一定的参考价值。
参考技术A解决这个问题的方法如下:
1、双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。
2、通过语句:
u=-6:0.1:6;
v=-6:0.1:6;
创建两个数组u和v。
3、通过语句:
[x,y]=meshgrid(u,v);
z=3*x.^2+3*y.^2;
首先将数组u和v转化成矩阵x和y,然后创建一个三维图像。
4、通过语句:
subplot(2,2,1);
surfc(x,y,z);
title('默认视角');
绘制一个默认视角的三维图像。
5、通过语句:
subplot(2,2,2);
surfc(x,y,z);
view(-50,80);
title('仰角80度,视角-50度');
将视角设置为仰角为80度,方位角为-50度;注意使用函数view()来设置视角。
6、通过语句:
subplot(2,2,3);
surfc(x,y,z);
view([6,2,2]);
title('视点是从点(6,2,2)指向原点');
视角设置为视点是从点(6,2,2)指向原点,注意使用函数view()的参数是一个三维坐标。
7、通过语句:
subplot(2,2,4);
surfc(x,y,z);
view(40,130);
title('仰角130度,方位角40度');
将视角设置为仰角130度,方位角40度;注意使用函数view()来设置视角。
8、最后可以查看不同视角下的三维图像。
python 三维坐标图
-
绘制3D柱状图,其数据格式为,二维数组或三维数组。
from numpy import *
file=open(‘C:\\Users\\jyjh\\Desktop\\count.txt‘,‘r‘)
arr=[]
for i in file.readlines():
temp=[]
for j in i.strip().split(‘\t‘):
temp.append(float(j))
arr.append(temp)
import random
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
mpl.rcParams[‘font.size‘]=10
fig=plt.figure()
ax=fig.add_subplot(111,projection=‘3d‘)
xs=range(len(arr))
ys=range(len(arr[0]))
for z in range(len(arr)):
xs=range(len(arr))
ys=arr[z]
color=plt.cm.Set2(random.choice(range(plt.cm.Set2.N)))
ax.bar(xs,ys,zs=z,zdir=‘y‘,color=color,alpha=0.5)
ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))
ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))
ax.set_xlabel(‘x‘)
ax.set_ylabel(‘y‘)
ax.set_zlabel(‘copies‘)
plt.show()
通过设置xs,ys,z可以设定绘制不同维度的数据。
-
绘制热图:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm
from matplotlib import axes
def draw_heatmap(data,xlabels,ylabels):
#cmap = cm.get_cmap(‘rainbow‘,1000)
cmap=cm.gray
figure=plt.figure(facecolor=‘w‘)
ax=figure.add_subplot(2,1,1,position=[1,1,1,1])
ax.set_yticks(range(len(ylabels)))
ax.set_yticklabels(ylabels)
ax.set_xticks(range(len(xlabels)))
ax.set_xticklabels(xlabels)
vmax=data[0][0]
vmin=data[0][0]
for i in data:
for j in i:
if j>vmax:
vmax=j
if j<vmin:
vmin=j
map=ax.imshow(data,interpolation=‘nearest‘,cmap=cmap,aspect=‘auto‘,vmin=vmin,vmax=vmax)
cb=plt.colorbar(mappable=map,cax=None,ax=None,shrink=0.8)
plt.show()
xl=range(16)
yl=range(16)
draw_heatmap(arr,xl,yl)
-
绘制曲面图
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
figure = plt.figure()
ax = Axes3D(figure)
X = np.arange(-10, 10, 0.25)
Y = np.arange(-10, 10, 0.25)
#网格化数据
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.cos(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=‘rainbow‘)
plt.show()
-
绘制曲线图
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
#生成画布
figure=plt.figure()
ax=figure.add_subplot(111,projection=‘3d‘)
#生成向量
z=np.linspace(0,6,1000)
r=1
x=r*np.sin(np.pi*2*z)
y=r*np.cos(np.pi*2*z)
ax.plot(x,y,z)
plt.show()
以上是关于matlab如何获得三维坐标图的视角的主要内容,如果未能解决你的问题,请参考以下文章
C语言编程实现根据坐标批量绘制长方体的三维图,最好可以用鼠标移动和旋转