python绘制海底热力图
时间: 2023-10-29 11:54:59 浏览: 145
要使用Python绘制海底热力图,您可以使用folium库和HeatMap插件。下面是一个示例代码,使用纬度、经度和震级数据来绘制地震热力图:
```
import folium
from folium import plugins
# 创建地图对象
m = folium.Map([39.904989,116.405285], tiles='https://webrd01.is.autonavi.com/appmaptile?&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=7', zoom_start=6, attr='高德')
# 数据准备
data_all = df[['纬度(°)','经度(°)','震级(M)']].values.tolist()
# 创建热力图
hm = plugins.HeatMap(data_all, radius=10, gradient={.1:'green',.6:'yellow',1:'red'})
hm.add_to(m)
# 保存地震热力图到文件
hm.save('地震热力图.html')
```
请确保您已经安装了所需的库(folium)并将数据准备好后,将代码粘贴到Python环境中运行即可。您可以根据需要自定义地图样式、热力图半径和颜色梯度。
希望这个例子对您有帮助!如果您有任何其他问题,请随时提问。
相关问题
python画二维海洋
### 如何使用Python绘制二维海洋图
在Python中,可以借助`Matplotlib`和`Seaborn`库来实现二维海洋图的可视化效果。以下是具体方法:
#### 方法一:基于Seaborn的KDE密度图模拟海洋图
通过调整颜色映射(`cmap`)以及填充参数(`fill`),可使图像呈现类似于海洋的效果。
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据集
df = sns.load_dataset('tips')
# 使用kdeplot函数绘制二维密度图
sns.kdeplot(
x=df['total_bill'],
y=df['tip'],
cmap="Blues", # 调整为蓝色系的颜色映射以模仿海洋
fill=True, # 启用区域填充
bw_adjust=.5,
thresh=0.1
)
plt.title("2D Ocean-like Density Map") # 图形标题
plt.xlabel("Total Bill ($)") # X轴标签
plt.ylabel("Tip ($)") # Y轴标签
plt.show()
```
上述代码展示了如何利用`seaborn.kdeplot()`生成带有蓝色调的二维密度分布图[^1],从而达到类似海洋视觉效果的目的。
---
#### 方法二:基于Matplotlib自定义海洋样式
如果希望更灵活地控制海洋样式的细节,则可以直接采用`Matplotlib`中的`imshow()`或`pcolormesh()`函数,并指定合适的颜色方案。
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建虚拟高度场数据 (代表海底地形)
def generate_ocean_data(size):
x = np.linspace(-size, size, 500)
y = np.linspace(-size, size, 500)
X, Y = np.meshgrid(x, y)
Z = -(np.sqrt(X**2 + Y**2)) * np.exp(-(X**2 + Y**2)/10) # 高斯凹陷模型
return X, Y, Z
X, Y, Z = generate_ocean_data(6)
# 定义绘图属性
fig, ax = plt.subplots(figsize=(8, 6))
im = ax.pcolormesh(X, Y, Z, shading='auto', cmap='ocean') # 使用'ocean'预置配色方案
# 添加颜色条
cbar = fig.colorbar(im, ax=ax)
cbar.set_label('Depth (m)', rotation=270, labelpad=15)
ax.set_title("2D Ocean Depth Visualization")
ax.set_xlabel("Longitude")
ax.set_ylabel("Latitude")
plt.show()
```
此部分代码构建了一个虚构的高度字段并应用了专门设计用于表现水体深浅变化的 `'ocean'` colormap 来渲染最终结果[^2]。
---
#### 方法三:结合Seaborn与Matplotlib增强展示能力
当需要进一步美化图表外观时,还可以综合运用两者的优势特性来进行定制化开发。
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 构造样本 DataFrame 数据结构
data = {'longitude': [-180+i*3 for i in range(120)],
'latitude': [i%90-45 for _ in range(120)]}
df = pd.DataFrame(data).assign(depth=lambda d: abs(d.longitude / 1e2 - .5))
# 初始化画布布局
sns.set_theme(style="whitegrid")
f, ax = plt.subplots(figsize=(10, 8))
# 执行实际作图操作
sns.scatterplot(
data=df,
x="longitude",
y="latitude",
hue="depth",
palette=sns.color_palette("coolwarm_r"),
sizes=(20, 200),
alpha=.6,
edgecolors=".2"
)
ax.set_title("Global Ocean Depths Distribution")
plt.tight_layout()
plt.show()
```
这里采用了散点形式表达地理空间上的深度差异情况,其中颜色渐变由 `hue` 参数驱动并通过 `"coolwarm_r"` 反向热力图完成过渡处理[^3]。
---
### 总结
以上三种方式分别适用于不同场景下的需求分析任务之中。无论是追求简洁高效的解决方案还是注重艺术美感的表现手法都能找到对应的切入点加以实践尝试。
阅读全文
相关推荐




