python - 从 1 开始制作 Matplotlib 绘图二进制图
问题描述
我有一个二维数组,想将其显示为二进制热图。我正在使用以下代码片段:
m = np.random.randint(1, 5, (5,5))
plt.imshow(m, cmap='binary')
但是,这样一来,轴就会是0到4。有没有办法把它改成1到5呢?
解决方案
您可以使用绘图功能pcolormesh
,它允许您指定数据的坐标,而不是imshow
。这里有些例子:
这是用于生成上述图像的完整代码:
import matplotlib.pyplot as plt
import numpy as np
def plotBinary(mmin=1, mmax=5):
x = np.arange(mmin-1, mmax+2)
cen = (x[:-1] + x[1:])/2
X,Y = np.meshgrid(cen, cen)
m = np.random.randint(mmin, mmax+1, X.shape)
plt.pcolormesh(X, Y, m, cmap='binary')
plotBinary()
plt.show()
plotBinary(3, 10)
plt.show()
坐标的解释pcolormesh
pcolormesh
期望X
和Y
坐标作为网格传递。鉴于您有 1D 列表x
以及y
x 和 y 坐标,您可以调用X,Y
= np.mesgrid(x, y)
为您生成 theX
和Y
坐标网格。这样您就不必担心坐标网格的实际语法,这很好。
在上面的plotBinary
函数中,cen
是一个盒子中心的列表。这也是我们的坐标x
和y
坐标列表,所以需要的坐标网格是通过调用np.meshgrid(cen, cen)
with cen
as both args 生成的。
推荐阅读
- python - 当我们使用 Albumentations 时,我们是否会更改数据集中的图像数量?
- api - 从 Big Blue Button 服务器中提取信息
- java - 使用 Selenium 容器化的 Google Cloud 调度程序 Java 作业
- sed - 以编程方式用 sed 或 gnu sed 替换第一次出现的字符串
- android - 触发时使用地理围栏获取更多信息
- reactjs - 无法读取数字的属性
- python - Python和cryptopals,为什么出现涉及int的错误,而我周围没有这样的整数?
- riscv - 添加新指令后Spike崩溃
- raspberry-pi - 树莓派 4 - 如何控制水雾化器输出设备
- reactjs - WebStorm TailwindCSS 自动完成