Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用cbar在Python中创建散点图_Python_Matplotlib_Scatter - Fatal编程技术网

如何使用cbar在Python中创建散点图

如何使用cbar在Python中创建散点图,python,matplotlib,scatter,Python,Matplotlib,Scatter,我正在尝试创建一个散点图,其中包含存储在.txt文件中的数据的cbar。我在stackoverflow上找到了一段代码,并对其进行了测试,以确定它是否能与我的数据一起工作 示例代码如下所示: for record in range(5): x = rand(50) y = rand(50) c = rand(1)[0] * np.ones(x.shape) X.append(x) Y.append(y) C.append(c) X = np.hst

我正在尝试创建一个散点图,其中包含存储在.txt文件中的数据的cbar。我在stackoverflow上找到了一段代码,并对其进行了测试,以确定它是否能与我的数据一起工作

示例代码如下所示:

for record in range(5):
    x = rand(50)
    y = rand(50)
    c = rand(1)[0] * np.ones(x.shape)
    X.append(x)
    Y.append(y)
    C.append(c)
X = np.hstack(X)
Y = np.hstack(Y)
C = np.hstack(C)
ms=45
s = plt.scatter(X,Y,c=C, cmap=cm,s=ms)
cbar = plt.colorbar()
cbar.set_label('test')
plt.savefig('pics/test/test.png', dpi=300)
上述代码生成以下散点图:

对于我的数据,我已经将上述简单代码改编成如下内容:

cm = plt.cm.get_cmap('YlOrRd')
x, y, z = np.loadtxt('test.txt', unpack=True) 
ms=45
pareto = plt.scatter(x,y,z, cmap=cm,s=ms)
cbar = plt.colorbar()
cbar.set_label('test')
plt.savefig('pics/test/test.png', dpi=300)
但是,上述代码返回时出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Mason\Desktop\WinPython-64bit-2.7.6.4\python- 
2.7.6.amd64\lib\site- 
packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in 
runfile
    execfile(filename, namespace)
  File "F:/Optimisation/Plotting_data.py", line 28, in 
<module>
    d = plt.scatter(x,y,z, cmap=cm,s=ms)
TypeError: scatter() got multiple values for keyword argument 's'
>>> 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Mason\Desktop\WinPython-64bit-2.7.6.4\python-
2.7.6.amd64\lib\site-
packages\spyderlib\widgets\externalshell\sitecustomize.py”,第540行,在
运行文件
execfile(文件名、命名空间)
文件“F:/Optimization/Plotting_data.py”,第28行,中
d=plt.散射(x,y,z,cmap=cm,s=ms)
TypeError:scatter()为关键字参数“”获取了多个值
>>> 

另外,我如何调整轴限制?

函数采用2个关键字参数,而不是在行中传递的3个关键字参数:

pareto = plt.scatter(x,y,z, cmap=cm,s=ms)
如果您需要以三维尺寸打印,您可以查看

要调整轴限制,您可以使用:

plt.xlim(x_low, x_high)
plt.ylim(y_low, y_high)

你差点就成功了。您只需要指定您的颜色属于
z
数组,因为
scatter
绘图不需要第三个值。只需在代码中指定
c=z
,即可

cm = plt.cm.get_cmap('YlOrRd')
x, y, z = np.loadtxt('test.txt', unpack=True) 
ms=45
pareto = plt.scatter(x,y,c=z, cmap=cm,s=ms) #change to c=z
cbar = plt.colorbar()
cbar.set_label('test')
plt.savefig('pics/test/test.png', dpi=300)

正如Jacob所指出的,使用
plt.xlim()
plt.ylim()
来调整限制。

好吧,如果它在有3个参数的示例代码中起作用,为什么它在这里不起作用?