python写:读取表格数据,显示为180*360的格网图,将nan值设为黑色
时间: 2024-02-20 13:56:03 浏览: 186
好的,您可以尝试以下代码实现您的需求:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取表格数据
df = pd.read_excel('your_file_path.xlsx')
# 将nan值设为0,方便后面绘图
df = df.fillna(0)
# 转换为numpy数组
data = df.to_numpy()
# 设定黑色为nan值的颜色
cmap = plt.get_cmap('gist_gray')
cmap.set_bad(color='black')
# 绘制格网图
plt.imshow(data, cmap=cmap, interpolation='nearest')
plt.colorbar()
# 设定横纵坐标
plt.xticks(np.arange(0, 360, 30))
plt.yticks(np.arange(0, 180, 30))
# 显示图像
plt.show()
```
需要注意的是,您需要将`your_file_path.xlsx`替换为您自己的表格文件路径。如果您的表格文件不是`.xlsx`格式,则需要相应地修改`read_excel`函数的参数。
相关问题
python写:读取Excel表格数据,将第一列删除后重新设定column和index的大小,将修改后的数据按照刻度画出格网图,其中nan值设为黑色,colorbar射程暖色并自定义上限
好的,我来给您介绍一下如何实现您的需求。首先,您需要使用 `pandas` 库读取 Excel 数据,然后删除第一列,重新设定 `column` 和 `index` 的大小。接着,您可以使用 `matplotlib` 库绘制格网图并设置 `colorbar` 的尺寸和颜色。
下面是具体的代码实现:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取 Excel 文件
df = pd.read_excel('your_file_name.xlsx')
# 删除第一列
df = df.drop(df.columns[0], axis=1)
# 设定新的 column 和 index
df.columns = ['col1', 'col2', ...] # 用实际的列名替换
df.index = range(1, len(df)+1)
# 绘制格网图
fig, ax = plt.subplots()
cmap = plt.cm.get_cmap('YlOrRd') # 设置颜色表
cmap.set_bad(color='black') # 将 nan 值设为黑色
im = ax.imshow(df, cmap=cmap, vmin=0, vmax=your_max_value) # 设定射程和颜色表的上限
plt.colorbar(im) # 添加 colorbar
plt.show()
```
其中,`your_file_name.xlsx` 是您的 Excel 文件名,`your_max_value` 是您设定的射程上限。您需要将代码中的 `col1`、`col2` 等替换成实际的列名。另外,如果您的数据中存在空值,可以使用 `df = df.fillna(np.nan)` 将其转换为 `nan` 值。
python绘制格网图显示格网,并把nan值设为黑色
你可以使用 matplotlib 库绘制格网图,并使用 numpy 中的 `numpy.ma.masked_invalid()` 方法将 NaN 值设置为黑色。示例代码如下:
```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='gray')
# 显示格网
ax.set_xticks(np.arange(-.5, 10, 1))
ax.set_yticks(np.arange(-.5, 10, 1))
ax.grid(color='white', linewidth=2)
# 将 NaN 值设置为黑色
data = np.ma.masked_invalid(data)
im.set_array(data)
# 显示图像
plt.show()
```
以上代码中,`np.ma.masked_invalid()` 方法可以将 NaN 值设置为遮罩值,然后通过 `imshow()` 方法将遮罩值设置为黑色。使用 `grid()` 方法可以显示格网线,其中 `color` 参数指定线的颜色,`linewidth` 参数指定线的宽度。
阅读全文