标签: mplot3d

matplotlib在3D中绘制多条线

我正在尝试使用matplotlib在3D图中绘制多条线。我有x和y值的6个数据集。到目前为止,我一直在尝试为数据集中的每个点指定一个z值。因此,数据集1中的所有点的z = 1,数据集2中的所有点的z = 2,依此类推。然后我将它们导出到三个文件中。“ X.txt”包含所有x值,“ Y.txt”包含所有y值,与“ Z.txt”相同。

到目前为止的代码如下:

        #!/usr/bin/python
        from mpl_toolkits.mplot3d import axes3d
        import matplotlib.pyplot as plt
        import numpy as np
        import pylab

        xdata = '/X.txt'
        ydata = '/Y.txt'
        zdata = '/Z.txt'

        X = np.loadtxt(xdata)
        Y = np.loadtxt(ydata)
        Z = np.loadtxt(zdata)

        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        ax.plot_wireframe(X,Y,Z)
        plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到的东西看起来非常接近我的需求。但是,使用线框时,每个数据集的第一个点和最后一个点是连接的。如何更改每个数据集的线条颜色以及如何删除数据集之间的连接线?

有没有比线框更好的打印样式?

python plot matplotlib mplot3d

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

Python - 3D参数曲线的线条颜色

我有2个列表tab_x(包含x的值)和tab_z(包含z的值),它们具有相同的长度和值y.

我想绘制一条由z值着色的3D曲线.我知道它可以绘制成2D绘图,但我想用不同的y值绘制这些绘图中的一些以进行比较,所以我需要它是3D.

我的tab_z也包含负数值

我已经在这个问题中找到了按时间(索引)为曲线着色的代码,但是我不知道如何转换这个代码以使其在我的情况下工作.

谢谢您的帮助.

我添加我的代码更具体:

fig8 = plt.figure()
ax8 = fig8.gca(projection = '3d')
tab_y=[]
for i in range (0,len(tab_x)):
  tab_y.append(y)
ax8.plot(tab_x, tab_y, tab_z)
Run Code Online (Sandbox Code Playgroud)

我现在有这个

在此输入图像描述

我试过这段代码

for i in range (0,len(tab_t)):
    ax8.plot(tab_x[i:i+2], tab_y[i:i+2], tab_z[i:i+2],color=plt.cm.rainbow(255*tab_z[i]/max(tab_z)))
Run Code Online (Sandbox Code Playgroud)

完全失败:

在此输入图像描述

python matplotlib mplot3d colormap

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

Matplotlib bar3d 变量 alpha

我正在使用带有 RdBu 颜色图的 matplotlib bar3d,并希望条形之间具有可变的透明度(因此较小的条形可能比较高的条形更透明)。

这是制作 3d 条形图的代码。数据存储在 4x4 矩阵“rho”中。目前 alpha 保持在 0.95,但能够控制每个柱的 alpha 值会很好。

干杯

xpos = np.arange(0,4,1)
ypos = np.arange(0,4,1)
xpos, ypos = np.meshgrid(xpos, ypos)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros(4*4)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = rho.flatten()
nrm=mpl.colors.Normalize(-1,1)
colors=cm.RdBu(nrm(-dz))
alpha = 0.95
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, alpha=alpha, color=colors, linewidth=0)
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d colormap

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

在Python 3中绘制3D多边形

在我以某种方式获得3D多边形实际绘图的过程中,我遇到了以下脚本(编辑:稍微修改):在python-matplotlib中绘制3D多边形

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import Poly3DCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0,1,1,0]
y = [0,0,1,1]
z = [0,1,0,1]
verts = [zip(x, y,z)]
ax.add_collection3d(Poly3DCollection(verts),zs=z)
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到以下错误消息:

TypeError: object of type 'zip' has no len()
Run Code Online (Sandbox Code Playgroud)

看起来这可能是Python 2对3的事情,因为我在Python 3中运行,而且该帖子已有五年了.所以我将第三行到最后一行改为:

verts = list(zip(x, y, z))
Run Code Online (Sandbox Code Playgroud)

现在verts显示在变量列表中,但我仍然收到错误:

TypeError: zip argument #1 must support iteration
Run Code Online (Sandbox Code Playgroud)

什么?我该如何解决?

python matplotlib mplot3d

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

在 PyCharm Professional 中绘图时 Mplot3D 绘图冻结

最近,当我在 PyCharm 中做 MatPlotLib 3D 绘图时,执行 plt.show() 命令时调试和绘图窗口冻结。在情节的顶部栏中提到了(未响应)。PyCharm Community Edition 2019 和 PyCharm Professional 2021 中都会发生这种情况。我运行的是 Python v3.8。如果我执行 plt.show(Block=True),交互式 3D 绘图将会出现,但我需要关闭图形才能继续调试。

有谁知道如何使用 plt.show() 绘制图形,启动交互式窗口,并在交互式窗口打开的情况下继续调试?这在我之前版本的 Python v3.7 中是有效的,但最近升级到 v3.8 时出现了问题。

matplotlib pycharm mplot3d

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

如何创建彩色球体

我有一个数据集,它将 phi 和 theta 的元组映射到代表信号强度的值。我想将它们绘制在球体上。我只是按照 matplotlib 的演示进行操作,并根据我的用例调整了代码。

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

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

u = phi
v = theta
vals =vals/vals.max()
Map = cm.coolwarm
facecolors = Map(vals[:])

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=1, cstride=1, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False, facecolors=facecolors)

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

这会生成一条错误消息 IndexError: index 4 is out ofbounds for …

python matplotlib mplot3d matplotlib-3d

0
推荐指数
1
解决办法
5149
查看次数

标签 统计

matplotlib ×6

mplot3d ×6

python ×5

colormap ×2

matplotlib-3d ×1

plot ×1

pycharm ×1