标签: mplot3d

如何在mplot3d中禁用透视图?

在mplot3d中绘图时是否可以禁用透视图,即使用正交投影?

python matplotlib mplot3d

13
推荐指数
2
解决办法
5541
查看次数

使用Matplotlib绘制3D图:隐藏轴但保留轴标签?

我正在使用Matplotlib来可视化三维数组.我几乎按照我想要的方式得到了它,除了一个小小的障碍...请参阅下面的插图和描述我可以做什么以及我想要它做什么...

  1. 展示一堆带有标签的立方体,还有一堆其他的东西.
  2. 显示一堆立方体但没有轴标签.
  3. 这就是我想要但却无法做到的事情...我想要显示一堆带有轴标签的立方体,但没有别的.

在此输入图像描述

我希望你们能帮助我:)请参阅下面的来源.

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import rcParams
import numpy as np
rcParams['axes.labelsize'] = 14
rcParams['axes.titlesize'] = 16
rcParams['xtick.labelsize'] = 14
rcParams['ytick.labelsize'] = 14
rcParams['legend.fontsize'] = 14
rcParams['font.family'] = 'serif'
rcParams['font.serif'] = ['Computer Modern Roman']
rcParams['text.usetex'] = True
rcParams['grid.alpha'] = 0.0

def make_cube():
    """ A Cube consists of a bunch of planes..."""

    planes = {
        "top"    : ( [[0,1],[0,1]], [[0,0],[1,1]], [[1,1],[1,1]] ),
        "bottom" : ( [[0,1],[0,1]], [[0,0],[1,1]], [[0,0],[0,0]] ),
        "left"   : …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib mplot3d

13
推荐指数
1
解决办法
7566
查看次数

使用mplot3d绘制2d数组

我有一个2D numpy数组,我想用3D绘制它.我听说过mplot3d,但我无法正常工作

这是我想要做的一个例子.我有一个尺寸为(256,1024)的数组.它应该绘制一个3D图形,其中x轴从0到256 y轴从0到1024,图形的z轴显示每个条目的数组值.

我该怎么做?

python arrays 2d mplot3d

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

mplot3d中的z轴格式

我试图在matplotlib中制作表面图,但我无法使z轴的格式看起来很好.我希望它是科学记数法,沿着轴的前缀和轴上方的指数(就像你通常在matlab中得到的那样).目前我只能得到没有科学记数法的值(前面有一个逗号和五个零),或者我得到前缀而不是指数......

尝试1 :(给出科学记数法,但不是指数)

from matplotlib import ticker

ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=3, cstride=3)
formatter = ticker.ScalarFormatter()
formatter.set_scientific(True)
formatter.set_powerlimits((-2,2))
ax.w_zaxis.set_major_formatter(formatter)
Run Code Online (Sandbox Code Playgroud)

尝试2 :(给出十进制表格上的值,与默认输出相同)

from matplotlib import ticker

ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=3, cstride=3)
ax.ticklabel_format(axis="z", style="sci", scilimits=(0,0))
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

python matplotlib mplot3d

11
推荐指数
1
解决办法
1800
查看次数

使用mplot3d在matplotlib中的箭头

我正在尝试使用matplotlib在此页面上重新创建图表:http://books.google.co.uk/books? id = sf9Qn9MS0ykC&p = PA18

这是我到目前为止:

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

class Arrow3D(FancyArrowPatch):
    def __init__(self, xs, ys, zs, *args, **kwargs):
        FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)
        self._verts3d = xs, ys, zs

    def draw(self, renderer):
        xs3d, ys3d, zs3d = self._verts3d
        xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)
        self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))
        FancyArrowPatch.draw(self, renderer)

def Rx(phi):
    return np.array([[1, 0, 0],
                     [0, np.cos(phi), -np.sin(phi)],
                     [0, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d

11
推荐指数
1
解决办法
2501
查看次数

如何在matplotlib中绘制滞后?

我试图描绘随着时间的推移干草叉分叉的发展.xy之间的关系近似线性,但最终S呈S 形.最终的关系不是一个功能; 某些x值有多个y值.

Matplotlib为表面图做了很好的线框,但这些表面图似乎无法处理非函数.
是否有另一种方式来绘制这种关系的表面?(如果可能的话,我不想要一个坚实的形状.)

目前我的数据是零数组,其中1s表示表面位置的近似值.我已经包含了一个非常小的样本数据集,以及将绘制其位置的示例代码.我如何"加入点"?
我的实际数据集较大(500x200x200)并且各不相同,因此我需要开发一个灵活的系统.

这是最终的数字可能是这样的:

干草叉分叉

阅读mplot3d文档这里似乎我可能需要将我的数据转换为2D数组.如果是这种情况,请为此提供一种方法,如果可能的话请告诉我这些数组代表什么.

我非常感谢任何有助于推进此事的意见/建议.

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

sample_data = np.array([
[[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
 [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
 [ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
 [ 0.,  0., …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d

10
推荐指数
1
解决办法
1514
查看次数

在python mplot3D中,2D图不会与3D轴壁齐平

我正在尝试将2D数据绘制到3D轴上.我使用了3D形状,ax.plot_surface但是我无法使2D数据与轴墙齐平ax.plot.

这是一个精简的示例代码,显示了我对2D数据的问题:

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

# Generate Example Data
x = [0.04,0,-0.04]
y = [0.04,0,-0.04]
z = [0.04,0,-0.04]

# Start plotting environment
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Plot 3 lines positioned against the axes "walls"
ax.plot(x,y,-0.08,zdir='z',c='r')
ax.plot(x,z, 0.08,zdir='y',c='g')
ax.plot(y,z,-0.08,zdir='x',c='b')

# Label each axis
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

# Set each axis limits
ax.set_xlim([-0.08,0.08])
ax.set_ylim([-0.08,0.08]) 
ax.set_zlim([-0.08,0.08]) 

# Equally stretch all axes
ax.set_aspect("equal")

# Set plot size for saving to disk …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-2.7 mplot3d

10
推荐指数
1
解决办法
929
查看次数

在matplotlib的表面和3d等高

我想使用色彩图,线框和轮廓绘制表面matplotlib.像这样的东西:

在此输入图像描述

请注意,我不是在询问与xy平行的平面中的轮廓,而是在图像中是3D和白色的轮廓.

如果我采用天真的方式并绘制所有这些东西,我看不到轮廓(见下面的代码和图片).

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

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果为表面刻面添加透明度,那么我可以看到轮廓,但它看起来非常混乱(请参阅下面的代码和图像)

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

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib surface mplot3d

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

更改plot_surface中的线条颜色

我用Python中的一些数据绘制了表面图.

在此输入图像描述

现在我试图改变这种情节的风格.但不幸的是我陷入了线条颜色.它的默认值是黑色,但我想让它变成红色或任何其他颜色.

我的代码是:

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

data=np.loadtxt("test.txt")


def formateU(data):
   U = np.zeros((20,20))
   for value in data:
      U[value[0],value[1]] = value[2]
   return U

U = formateU(data)


y,x=np.meshgrid(np.linspace(0.,19,20),np.linspace(0.,19,20))

fig = plt.figure()

ax=plt.axes(projection='3d')

ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5)

ax.view_init(30, 45)

plt.savefig("test.png")

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

它似乎很明显,它必须是一个额外的论点:

ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚.

你能帮我吗?

test.txt的可在http://www.file-upload.net/download-8564062/test.txt.html

python numpy matplotlib mplot3d

9
推荐指数
1
解决办法
7102
查看次数

python绘制3D立方体

我想画一个平行六面体.实际上我从绘制多维数据集的python脚本开始:

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

points = np.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]])


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

r = [-1,1]

X, Y = np.meshgrid(r, r)

ax.plot_surface(X,Y,1, alpha=0.5)
ax.plot_surface(X,Y,-1, alpha=0.5)
ax.plot_surface(X,-1,Y, alpha=0.5)
ax.plot_surface(X,1,Y, alpha=0.5)
ax.plot_surface(1,X,Y, alpha=0.5)
ax.plot_surface(-1,X,Y, alpha=0.5)

ax.scatter3D(points[:, 0], points[:, 1], points[:, 2])

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

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

为了获得平行六面体,我将点矩阵乘以下面的矩阵:

P …
Run Code Online (Sandbox Code Playgroud)

python 3d matplotlib mplot3d

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

标签 统计

mplot3d ×10

python ×10

matplotlib ×9

2d ×1

3d ×1

arrays ×1

numpy ×1

plot ×1

python-2.7 ×1

surface ×1