标签: mplot3d

如何使用python/matplotlib为3d绘图设置"相机位置"?

我正在学习如何使用mplot3d来生成漂亮的三维数据图表,到目前为止我非常高兴.我此刻想做的是一个旋转表面的小动画.为此,我需要为3D投影设置摄像机位置.我想这一定是可行的,因为在交互式使用matplotlib时可以使用鼠标旋转表面.但是如何从脚本中执行此操作?我在mpl_toolkits.mplot3d.proj3d中发现了很多变换,但是我无法找到如何将这些变换用于我的目的,而我没有找到任何我想要做的例子.

python matplotlib mplot3d

120
推荐指数
3
解决办法
8万
查看次数

设置3D绘图的纵横比

我试图从海底500米乘40米部分的声纳数据绘制海底的3D图像.我正在使用带有Axes3D的matplotlib/mplot3d,我希望能够更改轴的纵横比,以便x&y轴可以缩放.生成数据而不是实际数据的示例脚本是:

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# Create figure.
fig = plt.figure()
ax = fig.gca(projection = '3d')

# Generate example data.
R, Y = np.meshgrid(np.arange(0, 500, 0.5), np.arange(0, 40, 0.5))
z = 0.1 * np.abs(np.sin(R/40) * np.sin(Y/6))

# Plot the data.
surf = ax.plot_surface(R, Y, z, cmap=cm.jet, linewidth=0)
fig.colorbar(surf)

# Set viewpoint.
ax.azim = -160
ax.elev = 30

# Label axes.
ax.set_xlabel('Along track (m)')
ax.set_ylabel('Range (m)')
ax.set_zlabel('Height (m)')

# …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d

29
推荐指数
2
解决办法
2万
查看次数

使用Matplotlib绘制3D图

我只是试图用3D绘制曲面及其轮廓,就像在这个例子中一样.

这是我用来做的代码:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm
import numpy

def plot_3d_contour(x_dim, y_dim, x_steps, y_steps, scalar_field, file_path):
    fig = plt.figure()

    x, y = numpy.mgrid[-x_dim/2:x_dim/2:x_steps*1j, -y_dim/2:y_dim/2:y_steps*1j]
    v_min = numpy.min(scalar_field)
    v_max = nupmy.max(scalar_field)

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

    cset = ax.contourf(x, y, scalar_field, zdir='z', offset=v_min, cmap=cm.coolwarm)
    cset = ax.contourf(x, y, scalar_field, zdir='x', offset=-x_dim/2-1, cmap=cm.coolwarm)
    cset = ax.contourf(x, y, scalar_field, zdir='y', offset=y_dim/2+1, cmap=cm.coolwarm)

    ax.plot_surface(x, y, scalar_field, rstride=10, cstride=10, alpha=0.3)

    ax.set_xlabel('X')
    ax.set_xlim(-x_dim/2-1, x_dim/2+1)
    ax.set_ylabel('Y')
    ax.set_ylim(-y_dim/2-1, y_dim/2+1)
    ax.set_zlabel('Z')
    ax.set_zlim(v_min, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d contourf

22
推荐指数
1
解决办法
8988
查看次数

如何裁剪方形宽高比的Axes3D图?

这是一个准系统的例子:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')

# axes
for d in {f, t}:
    d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
    d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
    d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)

f.dist = t.dist = 5.2   # 10 is default

plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')

r = 6
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])

t.set_xlim3d([-r, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib aspect-ratio mplot3d

21
推荐指数
1
解决办法
1132
查看次数

旋转轴标记3D matplotlib中的文本

如何旋转z-label以使文本读取(bottom => top)而不是(top => bottom)?

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_zlabel('label text flipped', rotation=90) 
ax.azim = 225
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

无论我的ax.azim设置是什么,我都想要这个.这似乎是github上旧功能请求,但没有相关的工作.有解决方法吗?

python matplotlib mplot3d

17
推荐指数
1
解决办法
7739
查看次数

错误:mplot3d中的_string_to_bool(找到解决方法)

编辑:本文末尾的解决方法.

我试图运行这里这里提供的一些例子.

其中一个例子是:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

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

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z,  rstride=4, cstride=4, color='b')

plt.show()
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3d/axes3d.py:842: MatplotlibDeprecationWarning: The set_scale function was deprecated in version 1.3.
  self.zaxis.set_scale('linear')
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

matplotlib python-2.7 mplot3d

17
推荐指数
3
解决办法
7252
查看次数

matplotlib 3d轴刻度,标签和LaTeX

我正在运行示例脚本,并进行了以下修改:

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

ax.set_xlabel('$X$', fontsize=20, rotation=150)
ax.set_ylabel('$Y$')
ax.set_zlabel(r'$\gamma$', fontsize=30, rotation=60)
ax.yaxis._axinfo['label']['space_factor'] = 3.0

plt.show()
Run Code Online (Sandbox Code Playgroud)
  1. 如何将轴刻度调整为我选择的轴刻度?即,我如何让z轴仅标记为2,0和-2,以及我想要的字体大小?我知道如何在2D而不是3D中执行此操作.

  2. 上面的脚本产生以下内容:

在此输入图像描述

为什么x轴标签失真,我想用这个脚本做,但不是z轴标签(gamma)?这根本不符合逻辑.我需要在希腊字母中标注这个轴.我该如何解决?

python 3d latex matplotlib mplot3d

16
推荐指数
2
解决办法
3万
查看次数

在Python和matplotlib中连接三维散点图中的两个点

在下面的代码中,如何在.show()指令之前创建连接由两行代码创建的每对散点图(即将绿色圆圈连接到黄色箭头)的行连接到末尾的行?

import matplotlib.pyplot
from mpl_toolkits.mplot3d import Axes3D

dates       = [20020514, 20020515, 20020516, 20020517, 20020520]
highs       = [1135, 1158, 1152, 1158, 1163]
lows        = [1257, 1253, 1259, 1264, 1252]
upperLimits = [1125.0, 1125.0, 1093.75, 1125.0, 1125.0]
lowerLimits = [1250.0, 1250.0, 1156.25, 1250.0, 1250.0]

zaxisvalues0= [0, 0, 0, 0, 0]
zaxisvalues1= [1, 1, 1, 1, 1]
zaxisvalues2= [2, 2, 2, 2, 2]

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

ax.plot(dates, zaxisvalues1, lowerLimits, color = 'b')
ax.plot(dates, zaxisvalues2, upperLimits, color = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d

15
推荐指数
1
解决办法
2万
查看次数

3D曲线拟合

我有离散的规则网格a,b点及其对应的c值,我进一步插值以获得平滑的曲线.现在从插值数据,我还想创建一个曲线拟合的多项式方程.如何在多项式中拟合三维图?

我试着在MATLAB中这样做.我在MATLAB(r2010a)中使用了Surface拟合工具箱来曲线拟合三维数据.但是,如何在MATLAB/MAPLE或任何其他软件中找到适合一组数据的公式以获得最佳效果.有什么建议?最有用的还有一些真实的代码示例,可以在Web上查看PDF文件等.

这只是我数据的一小部分.

a = [ 0.001 .. 0.011];

b = [1, .. 10];

c = [ -.304860225, .. .379710865]; 
Run Code Online (Sandbox Code Playgroud)

提前致谢.

matlab curve-fitting maple mplot3d

15
推荐指数
1
解决办法
3万
查看次数

改变3D图(Matplotlib)的垂直(z)轴的位置?

我正在使用Python中的Matplotlib做一些3D表面图,并注意到一种恼人的现象.根据我设置视点(摄像机位置)的方式,垂直(z)轴在左侧和右侧之间移动.以下是两个示例:示例1,左侧轴,示例2,右侧轴.第一个例子有ax.view_init(25,-135),而第二个例子有ax.view_init(25,-45).

我想保持观点相同(查看数据的最佳方式).有没有办法强制轴到一侧或另一侧?

python matplotlib mplot3d

14
推荐指数
2
解决办法
7189
查看次数