添加颜色条以分散绘图或更改绘图类型

时间:2014-03-24 18:15:37

标签: python matplotlib

我正在绘制一些包含空间(x,y)成分以及z成分的数据,这是空间中该点的测量值。我正在看画廊,我只是 它。我认为我想要的是一个pcolormesh,但我不明白我需要提供什么参数。我终于成功地获得了一个散点图基本上可以做我想要的,但它不如我想要的漂亮。如果我能找到一种方法来使散点图中的点更大,我会对我的情节更加满意。此外,我一直试图添加一个图例 - 我只需要颜色条部分,因为最终用户并不真正关心X和Y尺寸。看看colorbar示例,我似乎需要添加一个轴,但我不明白我是怎么告诉它我需要的轴是Z轴。

x_vals = list(first_array[data_loc_dictionary['x_coord_index']][:])
y_vals = list(first_array[data_loc_dictionary['y_coord_index']][:])
y_vals = [-i for i in y_vals]
z_vals = list(first_array[data_loc_dictionary['value_index']][:])

plt.scatter(x_vals, y_vals, s = len(x_vals)^2, c = z_vals, cmap = 'rainbow')
plt.show()

以下是我要复制的示例: enter image description here 这是上面的代码产生的: enter image description here

  • 我希望第二个看起来更像第一个,即,如果有一种方法可以将标记调整到足以接近那个外观,那将是理想的
  • 我正在努力创造一个传奇。 Colorbar似乎是要走的路,但我不理解如何指定它需要基于Z值。

很好的捕获^ 2 - enter image description here

2 个答案:

答案 0 :(得分:2)

这个基本的例子怎么样:

# generate random data
In [63]: x = np.random.rand(20)
In [64]: y = np.random.rand(20)
In [65]: z = np.random.rand(20)

# plot it with square markers: marker='s'
In [66]: plt.scatter(x, y, s=len(x)**2, c=z, cmap='rainbow', marker='s')
Out[66]: <matplotlib.collections.PathCollection at 0x39e6c90>

# colorbar
In [67]: c = plt.colorbar(orientation='horizontal')
In [68]: c.set_label('This is a colorbar')
In [69]: plt.show()

enter image description here

点的大小由

给出
s : scalar or array_like, shape (n, ), optional, default: 20

    size in points^2.

我认为没有理由默认s=len(x)**2是一个不错的选择。我会根据你的喜好来玩它。

答案 1 :(得分:1)

如果您想知道如何使用pcolormesh复制初始示例图像,我会这样做:

import numpy as np
import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize=(6, 5))
grid = np.arange(-5, 6)
x, y = np.meshgrid(grid, grid)

z = np.random.randn(len(x), len(y)) 
mask = (np.abs(x) + np.abs(y)) > 4
z = np.ma.masked_array(z, mask)

mesh = ax.pcolormesh(x - .5, y - .5, z, cmap="coolwarm", vmin=-3, vmax=3)
plt.colorbar(mesh)

生产:

enter image description here