《3D散点图色标 matplotlib Python》

2024-09-27 21:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法将颜色条添加到我的三维散点图中,它的颜色范围是根据bifurWidth的值在min和{}之间。我尝试过stackoverflow上显示的各种尝试,但都没有成功。任何帮助都将是非常感谢,因为我在这方面是一个重大的损失。在

我最近的一次尝试是从下面的代码中散列出来的。在

我的代码:

from glob import glob
from pylab import *
import numpy as np
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

def myScatter(x0,y0,power_array,c,lw,s,vmin,vmax,cmap,label,ax):
        ax.scatter(x0,y0,power_array,c=c,lw=lw,s=s,vmin=min,vmax=max,cmap=cmhot,label=label)

fig = figure()
ax = fig.add_subplot(111, projection='3d')  
cmhot = get_cmap("jet") 
fig.tight_layout()
fig.set_size_inches(25,15)

min = 3 #colorbar range
max = 10
lw = 0 #linewidth
s = 10 #scatter size

for idx, p in enumerate(dataSorted[:,1]):
    powerLoop = dataSorted[idx,0]
    powerLoop = powerLoop.astype(np.float)
    bifurWidthLoop = dataSorted[idx,2]
    bifurWidthLoop = bifurWidthLoop.astype(np.float)

    y0 = genfromtxt(p, unpack=True, usecols=[0], skiprows=19, skip_footer=1)

    length = len(x0)
    power_array = [powerLoop] * length
    bifurWidth_array = [bifurWidthLoop] * length
    label = str(bifurWidth)

    a = myScatter(x0,power_array,y0,bifurWidth_array,lw,s,min,max,cmhot,label,ax)

    #cax = ax.imshow(y0, interpolation='nearest', vmin=min, vmax=max)
    #fig.colorbar(cax)
fig.savefig('test.png',dpi=300)

Plot output

尝试及其错误示例:

如果在plotting for循环的内部或外部使用fig.colorbar(a),则返回NoneType项目没有属性autoscale_None。在


Tags: fromimportfigaxminarraylabelmax
1条回答
网友
1楼 · 发布于 2024-09-27 21:23:04

您的代码没有运行(x0、dataSorted、y0等丢失),因此无法使其工作(另请注意x0、power_array、y0在fn调用中顺序错误)。您需要返回散点图的控制柄才能绘制颜色条。如果您更改myScatter函数以返回句柄

def myScatter(x0,y0,power_array,c,lw,s,vmin,vmax,cmap,label,ax):
    return ax.scatter(x0,y0,power_array,c=c,lw=lw,s=s,vmin=min,vmax=max,cmap=cmhot,label=label)

{然后呼叫}。一个最小的例子是

^{pr2}$

相关问题 更多 >

    热门问题