python将数组按数据大小画出格网图
时间: 2023-11-27 13:54:39 浏览: 33
要画出格网图,你可以使用Python的matplotlib库。以下是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成一个随机数组
data = np.random.rand(10, 10)
# 绘制格网图
fig, ax = plt.subplots()
ax.imshow(data, cmap=plt.cm.Blues, interpolation='nearest')
# 添加标签
for i in range(len(data)):
for j in range(len(data[0])):
ax.text(j, i, data[i][j], ha="center", va="center", color="white")
# 显示图像
plt.show()
```
上述代码中,我们首先生成了一个10x10的随机数组data。然后使用imshow函数将其绘制为格网图,并使用text函数添加了每个单元格的值。最后使用show函数显示图像。
你可以根据自己的需要修改代码来绘制不同大小和颜色的格网图。
相关问题
python将数组按数据大小画出格网图,并且将数组中的男nan值显示为黑色
可以使用matplotlib库中的imshow函数来实现,具体步骤如下:
1. 导入numpy和matplotlib库
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 生成待显示的数组
```python
arr = np.random.randn(10, 10) # 生成一个10x10的随机数组
arr[3, 5] = np.nan # 将第4行第6列的值设置为nan
```
3. 将nan值替换为0
```python
arr = np.nan_to_num(arr, nan=0)
```
4. 设置颜色映射
```python
cmap = plt.cm.get_cmap('jet') # 使用jet颜色映射
cmap.set_bad(color='black') # 将nan值显示为黑色
```
5. 调用imshow函数绘制格网图
```python
plt.imshow(arr, cmap=cmap)
plt.colorbar() # 添加颜色条
plt.show() # 显示图像
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.randn(10, 10)
arr[3, 5] = np.nan
arr = np.nan_to_num(arr, nan=0)
cmap = plt.cm.get_cmap('jet')
cmap.set_bad(color='black')
plt.imshow(arr, cmap=cmap)
plt.colorbar()
plt.show()
```
python将数组按数据大小画出格网图,并且将数组中的nan值在不替换的情况下显示为黑色
可以使用matplotlib库来实现这个功能。下面是代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
data = np.random.rand(10, 10)
data[3][5] = np.nan
# 绘制格网图
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='YlOrRd')
# 设置颜色映射范围
vmin = np.nanmin(data)
vmax = np.nanmax(data)
im.set_clim(vmin, vmax)
# 显示颜色条
cbar = ax.figure.colorbar(im, ax=ax)
# 将nan值显示为黑色
cmap = im.get_cmap()
cmap.set_bad(color='black')
# 设置坐标轴
ax.set_xticks(np.arange(data.shape[1]))
ax.set_yticks(np.arange(data.shape[0]))
ax.set_xticklabels(np.arange(data.shape[1])+1)
ax.set_yticklabels(np.arange(data.shape[0])+1)
ax.tick_params(top=True, bottom=False, labeltop=True, labelbottom=False)
# 在每个格子中显示数值
for i in range(data.shape[0]):
for j in range(data.shape[1]):
text = ax.text(j, i, round(data[i, j],2), ha="center", va="center", color="w")
# 设置图像标题
ax.set_title("Array Grid Plot")
# 显示图像
plt.show()
```
这段代码会生成一个10x10的随机数组,并且将其中一个元素置为nan。然后,它会绘制这个数组的格网图,并将nan值显示为黑色。最后,它会在每个格子中显示数值,并设置图像标题。你可以根据自己的需求修改代码中的参数。