Python画三维隐函数 python绘三维图

python用matpiotilb画三维曲面图import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = [1, 1, 2, 2]
Y = [3, 4, 4, 3]
Z = [1, 2, 1, 1]
ax.plot_trisurf(X, Y, Z)
plt.show()
使用Python画出一个三维的函数图像,数据来自于一个Excel表格?raw_input获取的输入是字符串,不能直接用np.array,需要用split进行切分,然后强制转化成数值类型,才能用plot函数
我把你的代码稍微修改了一下,可能不太漂亮,不过能运行了
x=[1,2,3]
a
=
raw_input('function')
a
=
a.split('
')#依空格对字符串a进行切分,如果是用逗号分隔,则改成a.split(',')
b
=
[]
for
i
in
range(len(a)):#把切分好的字符强制转化成int类型,如果是小数 , 将int改为float
b.append(int(a[i]))
plt.plot(x,
b,
label='x',
color="green",
linewidth=1)
不能直接写出函数的表达式 怎么在python里画函数图象呢?不写出y=f(x)这样的表达式,由隐函数的等式直接绘制图像,以x2 y2 xy=1的图像为例,使用sympy间接调用matplotlib工具的代码和该二次曲线图像如下(注意python里的乘幂符号是**而不是^,还有,python的sympy工具箱的等式不是a==b,而是a-b或者Eq(a,b) , 这几点和matlab的区别很大)
直接在命令提示行的里面运行代码的效果
from sympy import *;
x,y=symbols('x y');
plotting.plot_implicit(x**2 y**2 x*y-1);
c4d怎么用python画三维图要以Python生成器为媒介 。
用以下代码可以简单行程一个三维图,在这个基础上根据您的需要改写代码就可以了 。
在生成器内的python代码会生成一个object 。默认下,生成了一个立方体,并返回:
import c4d
def main():
return c4d.BaseObject(c4d.Ocube)
UserData输入
当然也可以返回别的物体,或者用userdata调整物体参数 。注意op可以快速引用生成器对象 。
importc4d
defmain():
cone =c4d.BaseObject(c4d.Ocone)
cone[c4d.PRIM_CONE_TRAD] = op[c4d.ID_USERDATA,1]
return cone
具体创建三维图步骤如下
1首先要【创建】-【造型】-【python生成器】,默认生成一个立方体即python编辑器
2-选中对象,右下角【打开python编辑器】
3-代码表示定义一个函数并返回C4D基本物体
4-这里简单改一下,把原代码中的Ocube改成Osphere , 点一下执行,会生成一个三维球体 。对于基本造型对象 , 这里的对象名称通用语法为大写字母O加对象的英文 。
5-这里还可以用定义变量返回值的表达方法,比如这里定义变量cone(圆锥) , c4d的属性就是大写字母O加上圆锥的英文即Ocone,返回这个变量值,执行就得到了一个圆锥 。
6-除了生成基本三维图形,python编辑器可以做很多事情 , 这里如果有一定的python编码基础,会更容易一些 。可以在网上找几个实例试一下,比如这种,生成数字的 。可以在搜索引擎输入关键字Cinema 4D - Python scripts来检索别人写好的脚本 。
python 绘制三维图形、三维数据散点图1. 绘制3D曲面图
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)
【Python画三维隐函数 python绘三维图】 x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
x,y=np.meshgrid(x,y)
r=np.sqrt(x**2, y**2)
z=np.sin(r)
//绘面函数
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=“rainbow”
plt.show()
2.绘制三维的散点图(表述一些数据点分布)
4a.mat数据地址:http blog.csdn.net/eddy_zhang/article/details/50496164
from matplotlib import pyplot as plt
import scipy.io as sio
from mpl_toolkits.mplot3d import Axes3D
matl=‘4a.mat’
data=https://www.04ip.com/post/sio.loadmat(matl)
m=data[‘data’]
x,y,z=m[0],m[1],m[2]
//创建一个绘图工程
ax=plt.subplot(111,project=‘3D’)
//将数据点分成三部分画,在颜色上有区分度
ax.scatter(x[:1000], y[:1000], z[:1000],c=‘y’ )//绘制数据点
ax.scatter(x[1000:4000], y[1000:4000], z[1000:4000],c=‘r’ )//绘制数据点
ax.scatter(x[4000:], y[4000:], z[4000:],c=‘g’ )//绘制数据点
ax.set_zlable(‘z’)//坐标轴
ax.set_ylable(‘y’)//坐标轴
ax.set_xlable(‘x’)
plt.show()
Python怎么生成三维数1、创建一般的多维数组
import numpy as np
a = np.array([1,2,3], dtype=int)# 创建1*3维数组array([1,2,3])
type(a)# numpy.ndarray类型
a.shape# 维数信息(3L,)
a.dtype.name# 'int32'
a.size# 元素个数:3
a.itemsize#每个元素所占用的字节数目:4

b=np.array([[1,2,3],[4,5,6]],dtype=int)# 创建2*3维数组array([[1,2,3],[4,5,6]])
b.shape# 维数信息(2L,3L)
b.size# 元素个数:6
b.itemsize# 每个元素所占用的字节数目:4

c=np.array([[1,2,3],[4,5,6]],dtype='int16')# 创建2*3维数组array([[1,2,3],[4,5,6]],dtype=int16)
c.shape# 维数信息(2L,3L)
c.size# 元素个数:6
c.itemsize# 每个元素所占用的字节数目:2
c.ndim# 维数

d=np.array([[1,2,3],[4,5,6]],dtype=complex)#复数二维数组
d.itemsize# 每个元素所占用的字节数目:16
d.dtype.name# 元素类型:'complex128'
2、创建一般的多维数组
import numpy as np
a = np.array([1,2,3], dtype=int)# 创建1*3维数组array([1,2,3])
type(a)# numpy.ndarray类型
a.shape# 维数信息(3L,)
a.dtype.name# 'int32'
a.size# 元素个数:3
a.itemsize#每个元素所占用的字节数目:4

b=np.array([[1,2,3],[4,5,6]],dtype=int)# 创建2*3维数组array([[1,2,3],[4,5,6]])
b.shape# 维数信息(2L,3L)
b.size# 元素个数:6
b.itemsize# 每个元素所占用的字节数目:4

c=np.array([[1,2,3],[4,5,6]],dtype='int16')# 创建2*3维数组array([[1,2,3],[4,5,6]],dtype=int16)
c.shape# 维数信息(2L,3L)
c.size# 元素个数:6
c.itemsize# 每个元素所占用的字节数目:2
c.ndim# 维数

d=np.array([[1,2,3],[4,5,6]],dtype=complex)#复数二维数组
d.itemsize# 每个元素所占用的字节数目:16
d.dtype.name# 元素类型:'complex128'
3、创建特殊类型的多维数组
 a1 = np.zeros((3,4))# 创建3*4全零二维数组
输出:
array([[ 0.,0.,0.,0.],
[ 0.,0.,0.,0.],
[ 0.,0.,0.,0.]])
a1.dtype.name# 元素类型:'float64'
a1.size# 元素个数:12
a1.itemsize# 每个元素所占用的字节个数:8

a2 = np.ones((2,3,4), dtype=np.int16)# 创建2*3*4全1三维数组
a2 = np.ones((2,3,4), dtype='int16')# 创建2*3*4全1三维数组
输出:
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)

a3 = np.empty((2,3))# 创建2*3的未初始化二维数组
输出:(may vary)
array([[ 1.,2.,3.],
[ 4.,5.,6.]])

a4 = np.arange(10,30,5)# 初始值10,结束值:30(不包含),步长:5
输出:array([10, 15, 20, 25])
a5 = np.arange(0,2,0.3)# 初始值0,结束值:2(不包含),步长:0.2
输出:array([ 0. ,0.3,0.6,0.9,1.2,1.5,1.8])
from numpy import pi
np.linspace(0, 2, 9)# 初始值0,结束值:2(包含),元素个数:9
输出:
array([ 0.,0.25,0.5 ,0.75,1.,1.25,1.5 ,1.75,2.])
x = np.linspace(0, 2*pi, 9)
输出:
array([ 0.,0.78539816,1.57079633,2.35619449,3.14159265,
3.92699082,4.71238898,5.49778714,6.28318531])

a = np.arange(6)
输出:
array([0, 1, 2, 3, 4, 5])
b = np.arange(12).reshape(4,3)
输出:
array([[ 0,1,2],
[ 3,4,5],
[ 6,7,8],
[ 9, 10, 11]])
c = np.arange(24).reshape(2,3,4)
输出:
array([[[ 0,1,2,3],
[ 4,5,6,7],
[ 8,9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
使用numpy.set_printoptions可以设置numpy变量的打印格式
在ipython环境下,使用help(numpy.set_printoptions)查询使用帮助和示例
4、多维数组的基本操作
加法和减法操作要求操作双方的维数信息一致,均为M*N为数组方可正确执行操作 。
a = np.arange(4)
输出:
array([0, 1, 2, 3])
b = a**2
输出:
array([0, 1, 4, 9])
c = 10*np.sin(a)
输出:
array([ 0.,8.41470985,9.09297427,1.41120008])

n35
输出:
array([ True,True,True,True], dtype=bool)
A = np.array([[1,1],[0,1]])
B = np.array([[2,0],[3,4]])
C = A * B# 元素点乘
输出:
array([[2, 0],
[0, 4]])
D = A.dot(B)# 矩阵乘法
输出:
array([[5, 4],
[3, 4]])
E = np.dot(A,B)# 矩阵乘法
输出:
array([[5, 4],
[3, 4]])
多维数组操作过程中的类型转换
When operating with arrays of different types, the type of the
resulting array corresponds to the more general or precise one (a
behavior known as upcasting)
即操作不同类型的多维数组时 , 结果自动转换为精度更高类型的数组,即upcasting
数组索引、切片和迭代
a = np.ones((2,3),dtype=int)# int32
b = np.random.random((2,3))# float64
b= a# 正确
a= b# 错误
a = np.ones(3,dtype=np.int32)
b = np.linspace(0,pi,3)
c = ab
d = np.exp(c*1j)
输出:
array([ 0.54030231 0.84147098j, -0.84147098 0.54030231j,
-0.54030231-0.84147098j])
d.dtype.name
输出:
'complex128'
多维数组的一元操作,如求和、求最小值、最大值等
a = np.random.random((2,3))
a.sum()
a.min()
a.max()

b = np.arange(12).reshape(3,4)
输出:
array([[ 0,1,2,3],
[ 4,5,6,7],
[ 8,9, 10, 11]])
b.sum(axis=0)# 按列求和
输出:
array([12, 15, 18, 21])
b.sum(axis=1)# 按行求和
输出:
array([ 6, 22, 38])
b.cumsum(axis=0)# 按列进行元素累加
输出:
array([[ 0,1,2,3],
[ 4,6,8, 10],
[12, 15, 18, 21]])
b.cumsum(axis=1)# 按行进行元素累加
输出:
array([[ 0,1,3,6],
[ 4,9, 15, 22],
[ 8, 17, 27, 38]])
universal functions
B = np.arange(3)
np.exp(B)
np.sqrt(B)
C = np.array([2.,-1.,4.])
np.add(B,C)
其他的ufunc函数包括:
all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor,inner, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var,vdot, vectorize, where
5. 数组索引、切片和迭代
a = np.arange(10)**3
a[2]
a[2:5]
a[::-1] # 逆序输出
for i in a:
print (i**(1/3.))
def f(x,y):
return 10*x y
b = np.fromfunction(f,(5,4),dtype=int)
b[2,3]
b[0:5,1]
b[:,1]
b[1:3,:]
b[-1]
c = np.array([[[0,1,2],[10,11,12]],[[100,101,102],[110,111,112]]])
输出:
array([[[0,1,2],
[ 10,11,12]],
[[100, 101, 102],
[110, 111, 112]]])
c.shape
输出:
(2L, 2L, 3L)
c[0,...]
c[0,:,:]
输出:
array([[ 0,1,2],
[10, 11, 12]])
c[:,:,2]
c[...,2]
输出:
array([[2,12],
[102, 112]])
for row in c:
print(row)
for element in c.flat:
print(element)
a = np.floor(10*np.random.random((3,4)))
输出:
array([[ 3.,9.,8.,4.],
[ 2.,1.,4.,6.],
[ 0.,6.,0.,2.]])
a.ravel()
输出:
array([ 3.,9.,8., ...,6.,0.,2.])
a.reshape(6,2)
输出:
array([[ 3.,9.],
[ 8.,4.],
[ 2.,1.],
[ 4.,6.],
[ 0.,6.],
[ 0.,2.]])
a.T
输出:
array([[ 3.,2.,0.],
[ 9.,1.,6.],
[ 8.,4.,0.],
[ 4.,6.,2.]])
a.T.shape
输出:
(4L, 3L)
a.resize((2,6))
输出:
array([[ 3.,9.,8.,4.,2.,1.],
[ 4.,6.,0.,6.,0.,2.]])
a.shape
输出:
(2L, 6L)
a.reshape(3,-1)
输出:
array([[ 3.,9.,8.,4.],
[ 2.,1.,4.,6.],
[ 0.,6.,0.,2.]])
详查以下函数:
ndarray.shape, reshape, resize, ravel
6. 组合不同的多维数组
a = np.floor(10*np.random.random((2,2)))
输出:
array([[ 5.,2.],
[ 6.,2.]])
b = np.floor(10*np.random.random((2,2)))
输出:
array([[ 0.,2.],
[ 4.,1.]])
np.vstack((a,b))
输出:
array([[ 5.,2.],
[ 6.,2.],
[ 0.,2.],
[ 4.,1.]])
np.hstack((a,b))
输出:
array([[ 5.,2.,0.,2.],
[ 6.,2.,4.,1.]])

from numpy import newaxis
np.column_stack((a,b))
输出:
array([[ 5.,2.,0.,2.],
[ 6.,2.,4.,1.]])

a = np.array([4.,2.])
b = np.array([2.,8.])
a[:,newaxis]
输出:
array([[ 4.],
[ 2.]])
b[:,newaxis]
输出:
array([[ 2.],
[ 8.]])
np.column_stack((a[:,newaxis],b[:,newaxis]))
输出:
array([[ 4.,2.],
[ 2.,8.]])
np.vstack((a[:,newaxis],b[:,newaxis]))
输出:
array([[ 4.],
[ 2.],
[ 2.],
[ 8.]])
np.r_[1:4,0,4]
输出:
array([1, 2, 3, 0, 4])
np.c_[np.array([[1,2,3]]),0,0,0,np.array([[4,5,6]])]
输出:
array([[1, 2, 3, 0, 0, 0, 4, 5, 6]])
详细使用请查询以下函数:
hstack, vstack, column_stack, concatenate, c_, r_
7. 将较大的多维数组分割成较小的多维数组
a = np.floor(10*np.random.random((2,12)))
输出:
array([[ 9.,7.,9., ...,3.,2.,4.],
[ 5.,3.,3., ...,9.,7.,7.]])
np.hsplit(a,3)
输出:
[array([[ 9.,7.,9.,6.],
[ 5.,3.,3.,1.]]), array([[ 7.,2.,1.,6.],
[ 7.,5.,0.,2.]]), array([[ 9.,3.,2.,4.],
[ 3.,9.,7.,7.]])]
np.hsplit(a,(3,4))
输出:
[array([[ 9.,7.,9.],
[ 5.,3.,3.]]), array([[ 6.],
[ 1.]]), array([[ 7.,2.,1., ...,3.,2.,4.],
[ 7.,5.,0., ...,9.,7.,7.]])]
实现类似功能的函数包括:
hsplit,vsplit,array_split
8.多维数组的复制操作
a = np.arange(12)
输出:
array([ 0,1,2, ...,9, 10, 11])

not copy at all
b = a
b is a# True
b.shape = 3,4
a.shape# (3L,4L)
def f(x)# Python passes mutable objects as references, so function calls make no copy.
print(id(x))# id是python对象的唯一标识符
id(a)# 111833936L
id(b)# 111833936L
f(a)# 111833936L

浅复制
c = a.view()
c is a# False
c.base is a# True
c.flags.owndata# False
c.shape = 2,6
a.shape# (3L,4L)
c[0,4] = 1234
print(a)
输出:
array([[0,1,2,3],
[1234,5,6,7],
[8,9,10,11]])
s = a[:,1:3]
s[:] = 10
print(a)
输出:
array([[0,10,10,3],
[1234,10,10,7],
[8,10,10,11]])

深复制
d = a.copy()
d is a# False
d.base is a# False
d[0,0] = 9999
print(a)
输出:
array([[0,10,10,3],
[1234,10,10,7],
[8,10,10,11]])
numpy基本函数和方法一览
ArrayCreation
arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros,zeros_like
Conversions
ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat
Manipulations
array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize,squeeze, swapaxes, take, transpose, vsplit, vstack
Questionsall, any, nonzero, where
Ordering
argmax, argmin, argsort, max, min, ptp, searchsorted, sort
Operations
choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum
Basic Statistics
cov, mean, std, var
Basic Linear Algebra
cross, dot, outer, linalg.svd, vdot
完整的函数和方法一览表链接:
Python画三维隐函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python绘三维图、Python画三维隐函数的信息别忘了在本站进行查找喔 。

    推荐阅读