python - Python - 基于值绘制网格
问题描述
我检查了类似的线程,我的问题将比这个更进一步:Plotting coloured grid based on values
我的网格大小为 20 x 10,其中第一个单元格(左下角)的 ID = 0,最后一个单元格(右上角)的 ID = 99。假设我有两个列表。第一个是值大于 0 的单元格列表,第二个列表由这些值组成,例如 ID = 11 的单元格的值为 77。
Cellid = [2, 4 ,5, 11 ,45 ,48 ,98]
Cellval = [20, 45 ,55, 77,45 ,30 ,15]
- 我想制作这个网格的二维图,其中单元格颜色基于值。空单元格是空白的,其余的:值越大,单元格越绿。
- 其次,我想用 3D 图从以前的点升级 2D 图,其中单元格值是列。
你能给我一个建议如何解决这个问题吗?
解决方案
“grid size 20 x 10”和右上角的ID=99有矛盾。所以我假设你的意思是“网格大小 10 x 10”。
然后,您可以创建一个到处都是 0 的数组,除了Cellid
. 在这里,我假设 ID 首先沿着 x 运行。您可以将其掩盖为根本0
没有着色;他们将其绘制为imshow
.
import numpy as np
import matplotlib.pyplot as plt
nrows = 10
ncols = 10
Cellid = [2, 4 ,5, 11 ,45 ,48 ,98]
Cellval = [20, 45 ,55, 77,45 ,30 ,15]
data = np.zeros(nrows*ncols)
data[Cellid] = Cellval
data = np.ma.array(data.reshape((nrows, ncols)), mask=data==0)
fig, ax = plt.subplots()
ax.imshow(data, cmap="Greens", origin="lower", vmin=0)
# optionally add grid
ax.set_xticks(np.arange(ncols+1)-0.5, minor=True)
ax.set_yticks(np.arange(nrows+1)-0.5, minor=True)
ax.grid(which="minor")
ax.tick_params(which="minor", size=0)
plt.show()
推荐阅读
- python - 如何使用 python 读取 nmea 文件
- python - 数据框在某些条件下为每行拆分为多个数据框
- ios - SwiftUI 一个视图中的两个可观察对象
- apache-spark - 使用 pyspark 中的条件通过聚合创建列表
- javascript - Leaflet React在功能组件中获取地图实例
- vb.net - 来自 GitLab 的 VB.NET 处理 Json
- android - Android:应用fontfamily后,粗体标签在textview中不起作用
- arrays - Gdscript 错误或奇怪的行为
- c - 尝试存储结构值时程序崩溃,登录系统不起作用
- nativescript - 通过眼睛图标使用 Nativescript 显示/隐藏密码文本