如何绘制看起来像散点图的零一二维矩阵?
How to plot a zero-one 2d matrix that will look like a scatter?
可能是一个奇怪的问题,但我想知道是否可以用散点图替换由 1 和 0 组成的二维矩阵,黑点,其中所有的都是 1,但没有 0:
不幸的是,我没有最好的可重现答案,但我有一个由 0 和 1 组成的二维数组(大小 275 和 357):
我希望基本上覆盖由小黑点组成的区域(假设以散点图的形式,稍后将覆盖在另一个等高线图上):
左边是原始等高线图,右边是我要实现的想法(图片更多的黑点就在由1组成的区域):
我试着在这里制作一个可复制的数组:
#array of ones and zeros
array = np.array(([0,0,0,0,0,0,1,1,0,0,0,1,1,1], [0,1,0,0,0,1,0,0,0,0,0,1,0,1]))
plt.pcolormesh(array)
我尝试以此为例并将其应用于二维数组,但出现了一些错误?
# as an example, borrowed from:
X=[[0,3,4,0,1,1],
[0,0,0,5,1,1],
[6,7,0,8,1,1],
[3,6,1,5,6,1]]
Y=[12,15,11,10]
x_arr = np.array(X)
y = np.array(Y)
fig, ax = plt.subplots()
#colors=list('bgrcmykw')
for i, x in enumerate(x_arr.T):
ax.scatter(x,y, c='k',s=5)
plt.show()
我的目标是基本上将这个由 1 和 0 组成的二维矩阵转换为散点图或某种图形,其中 1 由黑点组成,而 0 什么也没有。这稍后将覆盖在另一个等高线图上。我该如何将它们设置为由黑点组成的散点图?
这是我会做的。我没有绘制所有点以减少创建图形的计算需求。如果你有很多要绘制的点,你可能想这样做。无论哪种方式,您都可以根据需要进行更改。
import numpy as np
from matplotlib import pyplot as plt
np.random.seed(0)
mask = np.random.randint(0, 2, (20, 20))
ys, xs = np.where(mask.astype(bool))
plt.imshow(mask)
plt.scatter(xs[::2], ys[::2])
输出:
可能是一个奇怪的问题,但我想知道是否可以用散点图替换由 1 和 0 组成的二维矩阵,黑点,其中所有的都是 1,但没有 0:
不幸的是,我没有最好的可重现答案,但我有一个由 0 和 1 组成的二维数组(大小 275 和 357):
我希望基本上覆盖由小黑点组成的区域(假设以散点图的形式,稍后将覆盖在另一个等高线图上):
左边是原始等高线图,右边是我要实现的想法(图片更多的黑点就在由1组成的区域):
我试着在这里制作一个可复制的数组:
#array of ones and zeros
array = np.array(([0,0,0,0,0,0,1,1,0,0,0,1,1,1], [0,1,0,0,0,1,0,0,0,0,0,1,0,1]))
plt.pcolormesh(array)
我尝试以此为例并将其应用于二维数组,但出现了一些错误?
# as an example, borrowed from:
X=[[0,3,4,0,1,1],
[0,0,0,5,1,1],
[6,7,0,8,1,1],
[3,6,1,5,6,1]]
Y=[12,15,11,10]
x_arr = np.array(X)
y = np.array(Y)
fig, ax = plt.subplots()
#colors=list('bgrcmykw')
for i, x in enumerate(x_arr.T):
ax.scatter(x,y, c='k',s=5)
plt.show()
我的目标是基本上将这个由 1 和 0 组成的二维矩阵转换为散点图或某种图形,其中 1 由黑点组成,而 0 什么也没有。这稍后将覆盖在另一个等高线图上。我该如何将它们设置为由黑点组成的散点图?
这是我会做的。我没有绘制所有点以减少创建图形的计算需求。如果你有很多要绘制的点,你可能想这样做。无论哪种方式,您都可以根据需要进行更改。
import numpy as np
from matplotlib import pyplot as plt
np.random.seed(0)
mask = np.random.randint(0, 2, (20, 20))
ys, xs = np.where(mask.astype(bool))
plt.imshow(mask)
plt.scatter(xs[::2], ys[::2])
输出: