相关疑难解决方法(0)

Matplotlib plot_surface transparency artefact

我试图从一组指定z值的数据中绘制3D表面.虽然我设置了alpha = 1.0,但我得到了一些奇怪的透明效果,我可以在表面看到.

在绘图时和保存到文件时(包括png和pdf)都会出现人工制品: 在此输入图像描述

我试过改变线宽,并将步幅数从1改为10(在后一种情况下,由于分辨率太粗糙,表面不可见).

问:我怎样才能摆脱这种透明度?

这是我的代码:

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

y_label = r'x'
x_label = r'y'
z_label = r'z'

x_scale = 2.0*np.pi
y_scale = 2.0*np.pi

y_numPoints = 250
x_numPoints = 250

def quasiCrystal(x, y):
    z = 0
    for i in range(0,5):
        z += np.sin(x * np.cos(float(i)*np.pi/5.0) +
                    y * np.sin(float(i)*np.pi/5.0))
    return z

x = np.linspace(-x_scale, x_scale, x_numPoints)
y = np.linspace(-y_scale, y_scale, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

在 matplotlib 中修剪 3d 绘图之外的数据

我有一组 PDF,需要为 PDF 域的某个部分绘制。但是,当我在 3d 绘图上绘制线条时,每个 PDF 都会有尾部,

在此处输入图片说明

有没有一种干净的方法来不绘制发生在我的情节限制之外的尾巴?我知道我可以将数据更改为 NaN 以达到相同的效果,但我想在 matplotlib 中执行此操作。这是我当前的解决方法代码,

`# trim the data
y = np.ones(PDF_x.shape)*PDF_x
y[y>95]= np.nan
y[y<75]= np.nan


# plot the data
fig = plt.figure()
ax = fig.gca(projection='3d')
for i in range(PDF_capacity.shape[1]):
    ax.plot(life[i]*np.ones((PDF_x.shape)),y,PDF_capacity[:,i], label='parametric curve')

# set the axis limits
ax.set_ylim(75,95)

# add axis labels
ax.set_xlabel('charge cycles to failure point of 75% capacity')
ax.set_ylabel('capacity at 100 charge cycles')
ax.set_zlabel('probability')`
Run Code Online (Sandbox Code Playgroud)

修剪后,我可以制作以下情节,

在此处输入图片说明

python matplotlib

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

以透视方式绘制一系列 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 ×3

python ×3

mplot3d ×1

numpy ×1