如何使用 cbar 在 Python 中创建散点图
How to create a scatter plot in Python with cbar
我正在尝试使用存储在 .txt 文件中的数据的 cbar 创建散点图。我在 Whosebug 上找到了一段代码并对其进行了测试,看它是否适用于我的数据。
示例代码如下:
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)
但是,上面的代码returns有如下错误:
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'
>>>
此外,我该如何调整我的轴限制?
scatter
函数接受 2 个关键字参数,而不是您在行中传递的 3 个关键字参数:
pareto = plt.scatter(x,y,z, cmap=cm,s=ms)
如果您需要在 3D 维度中绘图,您可以查看 mplot3d。
要调整轴限制,您可以使用:
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()
调整限制。
我正在尝试使用存储在 .txt 文件中的数据的 cbar 创建散点图。我在 Whosebug 上找到了一段代码并对其进行了测试,看它是否适用于我的数据。
示例代码如下:
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)
但是,上面的代码returns有如下错误:
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'
>>>
此外,我该如何调整我的轴限制?
scatter
函数接受 2 个关键字参数,而不是您在行中传递的 3 个关键字参数:
pareto = plt.scatter(x,y,z, cmap=cm,s=ms)
如果您需要在 3D 维度中绘图,您可以查看 mplot3d。
要调整轴限制,您可以使用:
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()
调整限制。