我正在用matplotlib绘制3d图,并试图用属性"zorder“更改一些散乱者的顺序。具有最高zorder的对象应该放在顶部,但失败了。这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection= '3d')
coorx = [1,2,3,4]
coory = [1,1,1,1]
coorz = [1,1,1,1]
for i in range(4):
ax.scatter(coorx[i], coory[i], coorz[i], s = coorx[i]*40, alpha = 1, c = 'orange', zorder = 1)
ax.scatter(coorx[i], coory[i], coorz[i], s = 2, alpha = 1, c = 'white', zorder = 0)
plt.show()
其结果是:
如代码所示,我用较高的zorder指定了橙色点,但它们实际上低于白色点。
我在互联网上搜索并阅读了这份文件,但它们没有多大帮助。
发布于 2022-11-10 08:39:08
有意思的。我不知道为什么,但是zorder
在使用ax.plot
而不是ax.scatter
调用时似乎行为正常,如下所示:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection= '3d')
coorx = [1,2,3,4]
coory = [1,1,1,1]
coorz = [1,1,1,1]
ax.plot(coorx, coory, coorz, markersize = 10, marker = 'o', alpha = 1, c = 'orange', zorder = 1, linestyle = '')
ax.plot(coorx, coory, coorz, markersize = 1, marker = 'o', alpha = 1, c = 'white', zorder = 0, linestyle = '')
plt.show()
它产生:
变到
ax.plot(coorx, coory, coorz, markersize = 10, marker = 'o', alpha = 1, c = 'orange', zorder = 0, linestyle = '')
ax.plot(coorx, coory, coorz, markersize = 1, marker = 'o', alpha = 1, c = 'white', zorder = 1, linestyle = '')
收益率
我的猜测是,scatter
不知道如何处理zorder
,但plot
知道--但这完全是猜测。
https://stackoverflow.com/questions/74385967
复制相似问题