我正在尝试制作一个三维曲面图,显示voltage
与temp
与{bifurWidth
。在
下面是我的代码。在
我的代码有问题:
loadtxt
生成的'bifurWidth'numpy.ndarray
运行我的代码。本例中的错误是Color array must be two-dimensional
。但是,如果我使用np.arange()
生成一组虚拟的bifurWidth值,它就会运行。为什么两者都是numpy.ndarray
s时会发生这种情况?在有什么想法吗?在
我的代码是:
from glob import glob
from pylab import *
import numpy as np
from matplotlib import cm
import os
fs = 22
# Import data.
voltage = np.loadtxt('NonLorentzianData.txt',usecols=[0])
power = np.loadtxt('NonLorentzianData.txt',usecols=[1])
bifurWidth = arange(len(voltage))#np.loadtxt('LorentzianData.txt',usecols=[3])
temp = np.loadtxt('NonLorentzianData.txt',usecols=[4])
path = np.loadtxt('NonLorentzianData.txt',usecols=[5],dtype='S16')
c = np.abs(bifurWidth)
#Plot a 3D pot showing Temperature/Voltage/Power and intensity of colour showing bifurcation size.
fig = figure()
ax = fig.add_subplot(111, projection='3d')
cmhot = get_cmap("hot")
ax.scatter(voltage,temp,power,bifurWidth,s=35,c=c,cmap=cmhot)
ax.set_ylabel('Temperature (mK)',fontsize=fs)
ax.set_xlabel('Voltage (V)',fontsize=fs)
ax.set_zlabel('Power (dB)',fontsize=fs)
ax.set_title('Locating bifurcations.',fontsize=fs)
fig.tight_layout()
fig.set_size_inches(25,15)
fig.savefig('TEST.PNG',dpi=300)
根据this问题的答案,3D散点图不能与图例一起使用,因此需要制作一个没有显示的虚拟图来创建图例。下面是一个与您的问题相关的示例,该问题将图例添加到三维散点图:
首先,你说你想做一个表面图,但是在你的代码中你做了一个散点图。根据你剩下的问题描述,我假设你想做一个散点图。
当我查看
scatterplot
函数的documentation时,我看到了以下定义:你称之为:
^{pr2}$这意味着第四个形式参数
zdir
,将用bifurWidth
的值来调用。这不是您想要的,您需要使用默认值zdir
,并使用绝对值bifurWidth
作为颜色(通过设置c=c
已经完成的第二件事)。因此,只需删除
bifurWidth
参数,如下所示:这应该可以消除错误。
相关问题 更多 >
编程相关推荐