标签: mplot3d

Python matplotlib:plot3D,颜色为4D

我试图从x,y,z点列表制作3D图,我想根据第四个变量rho的值绘制颜色.

目前我有;

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot3D(cell_x, cell_y, cell_z, linestyle='None', marker='o', markersize = 5, antialiased=True)
ax.set_xlim3d(0.45, 0.55)
ax.set_ylim3d(0.45, 0.55)
ax.set_zlim3d(0.45, 0.55)
Run Code Online (Sandbox Code Playgroud)

如何添加cell_rho(我的第四个数组)作为我的x,y,z点的颜色?(例如喷射色图).

非常感谢你.

编辑:我不能使用散点图因为我的18000点散点图与仅带标记的plot3d相比非常慢.

python matplotlib color-mapping mplot3d

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

Matplotlib 3D条形图:轴问题

我遇到了在x,y,z轴上获取数据的问题.我的代码是我的代码.我为不同的轴定义范围(dx,dy.dz)的方式是否有任何问题.

result=[['122', '109', '2343', '220', '19'],
 ['15', '407', '37', '10', '102'],
 ['100', '100', '100', '100', '100'],
 ['113', '25', '19', '31', '112'],
 ['43', '219', '35', '33', '14'],
 ['132', '108', '256', '119', '14'],
 ['22', '48', '352', '51', '438']]

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

def format_date(x, pos=None):
     return dates.num2date(x).strftime('%m/%d/%Y')

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

xpos=[10/11/2013,10/12/2013,10/13/2013,10/14/2013,10/15/2013]
ypos=['A1','C1','G1','M1','M2','M3','P1']
zpos=result

dx=[5]
dy=[7]
dz=[7]
ax1.w_xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
ax1.bar3d(xpos,ypos,zpos,dx,dy,dz,color='#00ceaa')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:


TypeError                                 Traceback (most recent call last)
<ipython-input-45-02cd8e7ee228> in <module>()
     18 dz=[17] …
Run Code Online (Sandbox Code Playgroud)

python plot numpy matplotlib mplot3d

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

以透视方式绘制一系列 3D 投影的 2D 图

我想绘制一个似然分布,基本上是一个NxT矩阵,其中每一行代表每个时间步长t (t=0...T) 中某个变量的分布,这样我就可以可视化最大似然估计的轨迹屈服。

我想象了几个二维图,一个在另一个前面 - 像这样:

请忽略轴标签

到目前为止,基于这个我已经试过:

def TrajectoryPlot(P):
    P=P[0:4]  
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    def cc(arg):
        return colorConverter.to_rgba(arg, alpha=0.6)
    xs = np.arange(0, len(P[0]))
    verts = []
    zs = [0.0, 1.0, 2.0, 3.0, 4.0]
    for i in range(len(P)):
        print(i)
        verts.append(list(zip(xs,  P[i])))    
    poly = PolyCollection(verts, facecolors=[cc('r'), cc('g'), cc('b'),
                                             cc('y')])
    poly.set_alpha(0.7)
    ax.add_collection3d(poly, zs=zs, zdir='y')
    ax.set_xlabel('X')
    ax.set_ylabel('Likelihood')
    ax.set_zlabel('Time')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

但这还行不通。

python matplotlib mplot3d

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

定义Matplotlib 3D条形图的颜色

我无法找到在我的iPython笔记本中为matplotlib中的3d条形图设置cmap(或颜色)的正确方法.我可以在X和Y平面上正确设置我的图表(28 x 7标签),并带有一些随机Z值.该图很难解释,一个原因是x_data标签[1,2,3,4,5]的默认颜色都是相同的.

这是代码:

%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as npfig = plt.figure(figsize=(18,12))

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

x_data, y_data = np.meshgrid(np.arange(5),np.arange(3))
z_data = np.random.rand(3,5).flatten()

ax.bar3d(x_data.flatten(),
y_data.flatten(),np.zeros(len(z_data)),1,1,z_data,alpha=0.10)
Run Code Online (Sandbox Code Playgroud)

产生以下图表:

在此输入图像描述

我不想手动为标签x_data定义颜色.如何为x_data中的每个标签设置不同的"随机"cmap颜色,仍然保留

ax.bar3d

参数?以下是使用的变体

ax.bar

和不同的颜色,但我需要的是ax.bar3d. 在此输入图像描述

python 3d matplotlib mplot3d jupyter-notebook

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

像使用 Axes3D.plot_trisurf() 一样绘制 Trimesh 对象

我有一个 Trimesh 对象,但我不知道如何绘制它。我的目标是 mplot3d 中的 Axes3D.plot_trisurf() 函数会产生类似的结果(见下文)。Trimesh 对象甚至有一个包含面的属性,但我不知道从哪里获取网格点的坐标。

感谢您的任何想法!

mplot3d 中的 trisurf 图

python 3d mplot3d trimesh

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

Matplotlib Line3DCollection用于时变颜色

我试图绘制随时间变化的3D线轨迹,我希望颜色发生变化以显示时间的流逝(例如,从浅蓝色到深蓝色)。但是,明显缺少使用matplotlib的教程Line3DCollection这是我能找到的最接近的,但我得到的只是一条白线。

这是我的代码。

import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d.axes3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Line3DCollection
import numpy as np

# X has shape (3, n)
c = np.linspace(0, 1., num = X.shape[1])[::-1]
a = np.ones(shape = c.shape[0])
r = zip(a, c, c, a) # an attempt to make red vary from light to dark

# r, which contains n tuples of the form (r,g,b,a), looks something like this:
# [(1.0, 1.0, 1.0, 1.0), 
# (1.0, …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib mplot3d

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

如何在 matplotlib 中为 3D 散点图上的数据点着色

编辑:我设法弄清楚发生了什么。散点图有一个参数“线宽”(lw=n),它决定了散点图绘制点周围的线的粗细。因为我的绘图点的大小为 1 (s=1),所以线宽太粗了,实际上覆盖了绘图点的颜色。将线宽设置为 0 (lw=0) 的厚度应该可以解决问题。

我想生成数据点的 3d 散点图,根据它们的 y 坐标值对它们进行着色,但我无法使这些点实际着色。

如果数据点的值较低,则颜色应更接近色谱的蓝端。如果该值较高,则颜色应更接近光谱的红端。

我已经设法在 2D 中绘制了我想要的内容,但是在 3D 中复制该过程时遇到了麻烦。当前代码仅将点绘制为黑色。

这是我的 3D 尝试代码,以及 2D 中所需结果的屏幕截图。我到底做错了什么?

x_points、y_points 和 z_points 是浮点值列表。

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

def three_dimensional_scatterplot(
    self, x_points, y_points, z_points, data_file
):

    cm1 = cm.get_cmap('gist_rainbow')

    fig = plt1.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(
        x_points,
        y_points,
        z_points,
        s=1,
        c=y_points,
        cmap=cm1
    )

    ax.set_xlabel('X axis')
    plt1.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python 3d matplotlib mplot3d

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

Matplotlib 3d 绘图:如何摆脱过多的空白?

如果我在 Matplotlib 中制作 3d 绘图:

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')

x_labels = [10,20,30]
x = [1,2,3,4]
y = [3,1,5,1]
legend = False

for label in x_labels:
    x_3d = label*np.ones_like(x)
    ax.plot(x_3d, x, y, color='black', label='GMM')
    if legend == False:
        ax.legend()
        legend = True

ax.set_zlabel('test')
Run Code Online (Sandbox Code Playgroud)

它将产生:

在此处输入图片说明

左侧有过多的空白。我想知道是否有可能摆脱它?

python matplotlib mplot3d

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

在 matplotlib 中将 3D 背景更改为黑色

我无法将 3d 图形的背景更改为黑色。这是我目前的代码。当我将 facecolor 设置为黑色时,它会将图形内部更改为灰色,这不是我想要的。

在此处输入图片说明

fig = plt.figure()
fig.set_size_inches(10,10)
ax = plt.axes(projection='3d')
ax.grid(False)
ax.xaxis.pane.set_edgecolor('b')
ax.yaxis.pane.set_edgecolor('b')
ax.zaxis.pane.set_edgecolor('b')

# plt.gca().patch.set_facecolor('white')
# plt.axis('On')
fig.patch.set_facecolor('black')

ax.scatter(xs = Z['PC1'], ys = Z['PC2'], zs = Z['PC3'], c = Z['color'], s = 90, depthshade= False)
ax.set(title = 'test', xlabel = 'PC1', ylabel = 'PC2', zlabel = 'PC3')
Run Code Online (Sandbox Code Playgroud)

python matplotlib mplot3d

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

更改 mpl_toolkits.mplot3d 图中的颜色条限制

我正在尝试使用此方法更改 mpl_toolkits.mplot3d 图中的气候:

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection='3d')
p = ax.scatter(x_, y_, z_, c='gray', s=0.25, alpha='0.5')
cbar = fig.colorbar(p)
cbar.set_clim(0,1)
Run Code Online (Sandbox Code Playgroud)

这不起作用并给出弃用警告:MatplotlibDeprecationWarning:set_clim 函数在 Matplotlib 3.1 中已弃用,并将在 3.3 中删除。改用 ScalarMappable.set_clim。

有没有人想出如何更改 Axes3D 图中的颜色条限制?

提前致谢!

matplotlib mplot3d

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