前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还有高手?气象要素廓线局部放大绘制

还有高手?气象要素廓线局部放大绘制

作者头像
用户11172986
发布2024-06-20 17:26:57
690
发布2024-06-20 17:26:57
举报
文章被收录于专栏:气python风雨

前言

首先,我们需要使用Python中的Matplotlib库来创建一个简单的气象数据可视化。 我们将使用Matplotlib的plot函数来绘制气象数据的整体趋势图, 然后使用mark_inset函数来创建一局部放大的子图,以便更详细地查看数据的某个特定部分。

以下是步骤: 导入必要的库 创建示例气象数据 绘制整体趋势图 创建局部放大的子图 在子图中绘制局部放大的气象数据 显示图形 让我们逐步实现这些步骤。

代码语言:javascript
复制
代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import TransformedBbox, BboxPatch, BboxConnector
def mark_inset(parent_axes, inset_axes, loc1a=1, loc1b=1, loc2a=2, loc2b=2, **kwargs):
    rect = TransformedBbox(inset_axes.viewLim, parent_axes.transData)

    pp = BboxPatch(rect, fill=False, **kwargs)
    parent_axes.add_patch(pp)

    p1 = BboxConnector(inset_axes.bbox, rect, loc1=loc1a, loc2=loc1b, **kwargs)
    inset_axes.add_patch(p1)
    p1.set_clip_on(False)
    p2 = BboxConnector(inset_axes.bbox, rect, loc1=loc2a, loc2=loc2b, **kwargs)
    inset_axes.add_patch(p2)
    p2.set_clip_on(False)

    return pp, p1, p2
# 生成随机数据
height = np.arange(0, 5000, 100)
temperature = np.random.randint(-50, 50, size=len(height))

# 创建图形对象和子图对象
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,12))

# 在第一个子图中绘制温度随高度变化的曲线图
ax1.plot(temperature, height)
ax1.set_xlabel('Temperature (°C)')
ax1.set_ylabel('Height (m)')
ax1.set_title('Temperature vs. Height')

# 在第二个子图中绘制放大的子图
ax2.plot(temperature, height)
ax2.set_xlabel('Temperature (°C)')
ax2.set_ylabel('Height (m)')
ax2.set_title('Temperature vs. Height (Zoomed)')

# 设置第二个子图的范围
ax2.set_ylim([1000, 3000])
ax2.set_xlim([-50, 50])
mark_inset(ax1, ax2, loc1a=2, loc1b=1, loc2a=3, loc2b=4, fc='none', ec='black', lw=1.75)
plt.show()
代码语言:javascript
复制

正在我自鸣得意时,上网一看,没想到还有高手 matplotlib早就做了,那么我们来学习一下

代码语言:javascript
复制
代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
height = np.linspace(0, 5000, 50)
temperature = np.random.randint(-50, 50, size=len(height))

# 创建图形对象和子图对象
fig, (ax1) = plt.subplots(1, figsize=(10,20))

# 在第一个子图中绘制温度随高度变化的曲线图
ax1.plot(temperature, height)
ax1.set_xlabel('Temperature (°C)')
ax1.set_ylabel('Height (m)')
ax1.set_title('Temperature vs. Height')


# 添加放大的子图及连接线
x1, x2, y1, y2 = -50, 50, 1000, 3000  # subregion of the original image
axins = ax1.inset_axes([1.2, 0.1, 0.6, 0.6], xlim=(x1, x2), ylim=(y1, y2), xticklabels=[], yticklabels=[])
axins.plot(temperature, height)
axins.set_title('Zoomed Inset')
ax1.indicate_inset_zoom(axins, edgecolor="black")

plt.show()
代码语言:javascript
复制

总的来说,Python的魅力就是路不只有一条。

如果觉得有帮得到的地方,麻烦您动动小手指文末的广告都给我点一下,然后一键三连啦,感谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档