垂直填充3D Matplotlib图

EnduroDave

我有一个使用matplotlib制作的3d图。现在,我想填充绘制的线和x,y轴之间的垂直空间,以突出显示z轴上线的高度。在2d图上可以这样做,fill_between但对于3d图似乎没有任何相似之处。有人可以帮忙吗?

这是我当前的代码

from stravalib import Client
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt

... code to get the data ....

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

fig = plt.figure()
ax = fig.gca(projection='3d')
zi = alt
x = df['x'].tolist()
y = df['y'].tolist()
ax.plot(x, y, zi, label='line')
ax.legend()
plt.show()     

和当前情节

在此处输入图片说明

只是要清楚一点,我想要垂直填充到x,y轴交点,不是这个...

在此处输入图片说明

Flabetvibes

你是对的。似乎2D绘图功能在3D绘图中没有等效项fill_between我建议的解决方案是将数据转换为3D多边形。这是相应的代码:

import math as mt
import matplotlib.pyplot as pl
import numpy as np
import random as rd

from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection


# Parameter (reference height)
h = 0.0

# Code to generate the data
n = 200
alpha = 0.75 * mt.pi
theta = [alpha + 2.0 * mt.pi * (float(k) / float(n)) for k in range(0, n + 1)]
xs = [1.0 * mt.cos(k) for k in theta]
ys = [1.0 * mt.sin(k) for k in theta]
zs = [abs(k - alpha - mt.pi) * rd.random() for k in theta]

# Code to convert data in 3D polygons
v = []
for k in range(0, len(xs) - 1):
    x = [xs[k], xs[k+1], xs[k+1], xs[k]]
    y = [ys[k], ys[k+1], ys[k+1], ys[k]]
    z = [zs[k], zs[k+1],       h,     h]
    #list is necessary in python 3/remove for python 2
    v.append(list(zip(x, y, z))) 
poly3dCollection = Poly3DCollection(v)

# Code to plot the 3D polygons
fig = pl.figure()
ax = Axes3D(fig)
ax.add_collection3d(poly3dCollection)
ax.set_xlim([min(xs), max(xs)])
ax.set_ylim([min(ys), max(ys)])
ax.set_zlim([min(zs), max(zs)])
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")

pl.show()

它产生下图:

在此处输入图片说明

我希望这能帮到您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matplotlib的3D图

来自分类Dev

matplotlib中的填充图

来自分类Dev

Matplotlib:获取子图来填充图

来自分类Dev

python matplotlib填充箱图

来自分类Dev

Spyder终端内的3D matplotlib图

来自分类Dev

matplotlib 3d表面图未显示

来自分类Dev

Matplotlib 3D图:如何摆脱多余的空白?

来自分类Dev

使用python中的matplotlib创建3D表面图

来自分类Dev

定义Matplotlib 3D条形图的颜色

来自分类Dev

使用matplotlib进行3d图的标签处理

来自分类Dev

Python-Matplotlib中的3D线图颜色图

来自分类Dev

具有分类轴的3D图[Python / Matplotlib]

来自分类Dev

Matplotlib的3D图:隐藏轴但保留轴标签?

来自分类Dev

Python-Matplotlib中的3D线图颜色图

来自分类Dev

具有分类轴的3D图[Python / Matplotlib]

来自分类Dev

Matplotlib 3D图:如何摆脱多余的空白?

来自分类Dev

matplotlib中的自定义颜色图用于3D表面图

来自分类Dev

减少matplotlib中子图之间的垂直空间

来自分类Dev

填充Matplotlib中3个图之间的空间

来自分类Dev

Matplotlib分离3D数据的2D等高线投影图

来自分类Dev

使用matplotlib的2D像素图

来自分类Dev

带有matplotlib的堆叠式3d条形图

来自分类Dev

matplotlib 3D图按值范围进行颜色编码

来自分类Dev

如何在wxPython中使用鼠标旋转matplotlib 3D图?

来自分类Dev

Matplotlib 3D图-将颜色栏与不同的轴相关联

来自分类Dev

如何使用matplotlib在python中绘制3D密度图

来自分类Dev

在Matplotlib中将误差线添加到3D图

来自分类Dev

如何在Python matplotlib中正确缩放3d Quiver图?

来自分类Dev

如何从文件中读取数据z = f(x,y)在matplotlib中制作3D图