热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专为生成全球变暖趋势的可视化图表而设计,能够根据用户提供的数据集或参数,智能分析并呈现温度变化趋势。通过多维度数据整合与可视化技术,帮助研究人员、教育工作者和政策制定者直观理解气候变化的时空分布特征,支持气候数据的深度分析和有效传播。亮点包括自适应数据解析、多尺度趋势呈现和可定制化视觉表达,确保输出结果既科学准确又易于理解。
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 640,
"height": 360,
"data": {
"values": [
{"year":1970,"global_anom":-0.03,"land_only":0.02,"sea_only":-0.06,"lower_CI":-0.10,"upper_CI":0.04,"source":"station+SST"},
{"year":1975,"global_anom":-0.05,"land_only":0.00,"sea_only":-0.08,"lower_CI":-0.12,"upper_CI":0.03,"source":"station+SST"},
{"year":1980,"global_anom":0.11,"land_only":0.18,"sea_only":0.07,"lower_CI":0.04,"upper_CI":0.18,"source":"station+SST"},
{"year":1985,"global_anom":0.12,"land_only":0.20,"sea_only":0.08,"lower_CI":0.05,"upper_CI":0.19,"source":"station+SST"},
{"year":1990,"global_anom":0.34,"land_only":0.49,"sea_only":0.25,"lower_CI":0.27,"upper_CI":0.41,"source":"station+SST"},
{"year":1995,"global_anom":0.43,"land_only":0.65,"sea_only":0.31,"lower_CI":0.36,"upper_CI":0.50,"source":"station+SST"},
{"year":2000,"global_anom":0.42,"land_only":0.68,"sea_only":0.29,"lower_CI":0.35,"upper_CI":0.49,"source":"station+SST"},
{"year":2005,"global_anom":0.61,"land_only":0.98,"sea_only":0.43,"lower_CI":0.54,"upper_CI":0.68,"source":"station+SST"},
{"year":2010,"global_anom":0.66,"land_only":1.02,"sea_only":0.47,"lower_CI":0.59,"upper_CI":0.73,"source":"blend"},
{"year":2015,"global_anom":0.89,"land_only":1.30,"sea_only":0.66,"lower_CI":0.82,"upper_CI":0.96,"source":"blend"},
{"year":2016,"global_anom":0.99,"land_only":1.45,"sea_only":0.74,"lower_CI":0.92,"upper_CI":1.06,"source":"blend"},
{"year":2017,"global_anom":0.92,"land_only":1.37,"sea_only":0.69,"lower_CI":0.85,"upper_CI":0.99,"source":"blend"},
{"year":2018,"global_anom":0.83,"land_only":1.24,"sea_only":0.62,"lower_CI":0.76,"upper_CI":0.90,"source":"blend"},
{"year":2019,"global_anom":0.95,"land_only":1.39,"sea_only":0.72,"lower_CI":0.88,"upper_CI":1.02,"source":"blend"},
{"year":2020,"global_anom":1.02,"land_only":1.49,"sea_only":0.77,"lower_CI":0.95,"upper_CI":1.09,"source":"blend"},
{"year":2021,"global_anom":0.98,"land_only":1.45,"sea_only":0.74,"lower_CI":0.91,"upper_CI":1.05,"source":"blend"},
{"year":2022,"global_anom":0.95,"land_only":1.42,"sea_only":0.72,"lower_CI":0.88,"upper_CI":1.02,"source":"blend"},
{"year":2023,"global_anom":1.12,"land_only":1.67,"sea_only":0.86,"lower_CI":1.05,"upper_CI":1.19,"source":"blend"},
{"year":2024,"global_anom":1.18,"land_only":1.74,"sea_only":0.92,"lower_CI":1.11,"upper_CI":1.25,"source":"blend"}
]
},
"layer": [
{
"mark": {"type": "area", "opacity": 0.25, "color": "#9ecae1"},
"encoding": {
"x": {"field": "year", "type": "quantitative", "title": "Year"},
"y": {"field": "lower_CI", "type": "quantitative", "title": "Anomaly (°C)"},
"y2": {"field": "upper_CI"},
"tooltip": [
{"field":"year","type":"quantitative"},
{"field":"global_anom","type":"quantitative","title":"Global"},
{"field":"lower_CI","type":"quantitative","title":"Lower CI"},
{"field":"upper_CI","type":"quantitative","title":"Upper CI"}
]
}
},
{
"mark": {"type": "line", "color": "#08519c", "strokeWidth": 2},
"encoding": {
"x": {"field": "year", "type": "quantitative"},
"y": {"field": "global_anom", "type": "quantitative"},
"tooltip": [
{"field":"year","type":"quantitative"},
{"field":"global_anom","type":"quantitative","title":"Global"}
]
}
},
{
"mark": {"type": "rule", "color": "#666", "strokeDash": [4,4]},
"encoding": {"x": {"value": 2010}}
},
{
"mark": {"type": "rule", "color": "#999"},
"encoding": {"y": {"value": 0}}
}
],
"config": {"axis": {"grid": true}}
}
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 640,
"height": 360,
"data": {
"values": [
{"year":1970,"land_only":0.02,"sea_only":-0.06},
{"year":1975,"land_only":0.00,"sea_only":-0.08},
{"year":1980,"land_only":0.18,"sea_only":0.07},
{"year":1985,"land_only":0.20,"sea_only":0.08},
{"year":1990,"land_only":0.49,"sea_only":0.25},
{"year":1995,"land_only":0.65,"sea_only":0.31},
{"year":2000,"land_only":0.68,"sea_only":0.29},
{"year":2005,"land_only":0.98,"sea_only":0.43},
{"year":2010,"land_only":1.02,"sea_only":0.47},
{"year":2015,"land_only":1.30,"sea_only":0.66},
{"year":2016,"land_only":1.45,"sea_only":0.74},
{"year":2017,"land_only":1.37,"sea_only":0.69},
{"year":2018,"land_only":1.24,"sea_only":0.62},
{"year":2019,"land_only":1.39,"sea_only":0.72},
{"year":2020,"land_only":1.49,"sea_only":0.77},
{"year":2021,"land_only":1.45,"sea_only":0.74},
{"year":2022,"land_only":1.42,"sea_only":0.72},
{"year":2023,"land_only":1.67,"sea_only":0.86},
{"year":2024,"land_only":1.74,"sea_only":0.92}
]
},
"transform": [{"fold": ["land_only", "sea_only"], "as": ["series", "anom"]}],
"mark": {"type": "line", "point": true},
"encoding": {
"x": {"field": "year", "type": "quantitative", "title": "Year"},
"y": {"field": "anom", "type": "quantitative", "title": "Anomaly (°C)"},
"color": {"field": "series", "type": "nominal", "scale": {"domain": ["land_only","sea_only"], "range": ["#e31a1c","#1f78b4"]}}
},
"config": {"axis": {"grid": true}}
}
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 640,
"height": 300,
"data": {
"values": [
{"year":1970,"land_only":0.02,"sea_only":-0.06},
{"year":1975,"land_only":0.00,"sea_only":-0.08},
{"year":1980,"land_only":0.18,"sea_only":0.07},
{"year":1985,"land_only":0.20,"sea_only":0.08},
{"year":1990,"land_only":0.49,"sea_only":0.25},
{"year":1995,"land_only":0.65,"sea_only":0.31},
{"year":2000,"land_only":0.68,"sea_only":0.29},
{"year":2005,"land_only":0.98,"sea_only":0.43},
{"year":2010,"land_only":1.02,"sea_only":0.47},
{"year":2015,"land_only":1.30,"sea_only":0.66},
{"year":2016,"land_only":1.45,"sea_only":0.74},
{"year":2017,"land_only":1.37,"sea_only":0.69},
{"year":2018,"land_only":1.24,"sea_only":0.62},
{"year":2019,"land_only":1.39,"sea_only":0.72},
{"year":2020,"land_only":1.49,"sea_only":0.77},
{"year":2021,"land_only":1.45,"sea_only":0.74},
{"year":2022,"land_only":1.42,"sea_only":0.72},
{"year":2023,"land_only":1.67,"sea_only":0.86},
{"year":2024,"land_only":1.74,"sea_only":0.92}
]
},
"transform": [{"calculate": "datum.land_only - datum.sea_only", "as": "land_minus_sea"}],
"mark": {"type": "line", "point": true, "color": "#33a02c"},
"encoding": {
"x": {"field": "year", "type": "quantitative", "title": "Year"},
"y": {"field": "land_minus_sea", "type": "quantitative", "title": "Land − Sea (°C)"},
"tooltip": [{"field":"year"},{"field":"land_minus_sea","title":"Δ(land-sea)"}]
},
"layer": [
{
"mark": {"type": "rule", "color": "#999"},
"encoding": {"y": {"value": 0}}
}
],
"config": {"axis": {"grid": true}}
}
可复现代码(Python,pandas+seaborn+matplotlib):
# -*- coding: utf-8 -*-
import io, textwrap
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
raw = textwrap.dedent("""
meta: region=Asia, baseline=1981-2010, unit=°C anomaly
columns: date,subregion,area_type,temp_anomaly_C,stations
1995-01,东亚,Urban,0.21,124
1995-01,东亚,Rural,0.10,98
1995-07,东亚,Urban,0.45,132
1995-07,东亚,Rural,0.30,105
2005-01,东亚,Urban,0.38,148
2005-01,东亚,Rural,0.24,112
2005-07,东亚,Urban,0.62,156
2005-07,东亚,Rural,0.41,118
2015-01,东亚,Urban,0.71,169
2015-01,东亚,Rural,0.49,126
2015-07,东亚,Urban,0.98,177
2015-07,东亚,Rural,0.73,132
2023-01,东亚,Urban,0.95,182
2023-01,东亚,Rural,0.68,139
2023-07,东亚,Urban,1.24,191
2023-07,东亚,Rural,0.97,145;分析时段:1995-2023年(季节样本,重点对比1995/2005/2015/2023);地理范围:亚洲主要人口带(10°N–55°N,东亚样本)
""").strip()
# 解析meta与columns
lines = [l.strip() for l in raw.splitlines() if l.strip()]
meta_line = [l for l in lines if l.startswith("meta:")][0]
cols_line = [l for l in lines if l.startswith("columns:")][0]
data_lines = [l for l in lines if not (l.startswith("meta:") or l.startswith("columns:"))]
# 处理尾部中文分号注释
clean_data_lines = []
for l in data_lines:
l = l.split(';')[0].strip()
if l:
clean_data_lines.append(l)
cols = cols_line.replace("columns:", "").strip()
csv_text = "\n".join([cols] + clean_data_lines)
df = pd.read_csv(io.StringIO(csv_text), parse_dates=['date'])
# 预处理
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df = df.sort_values(['year','month','area_type'])
# 趋势计算函数(最小二乘,斜率单位:°C/十年)
def fit_trend(sub):
x = sub['year'].values.astype(float)
y = sub['temp_anomaly_C'].values.astype(float)
# 相对起点年份以稳定拟合
x0 = x - x.min()
k, b = np.polyfit(x0, y, 1) # k: °C/年
return pd.Series({
'slope_per_decade': k * 10.0,
'intercept_at_start': b, # 对应x0=0(起始年)
})
trend = (df.groupby(['area_type','month'])
.apply(fit_trend)
.reset_index())
# 图形风格
sns.set(context="talk", style="whitegrid", font="DejaVu Sans")
palette = {'Urban': '#d62728', 'Rural': '#1f77b4'}
linestyles = {1: '-', 7: '--'}
month_label = {1: 'Jan', 7: 'Jul'}
# 图1:时间序列与趋势
fig, ax = plt.subplots(figsize=(9,5), dpi=150)
for (a,m), sub in df.groupby(['area_type','month']):
sub = sub.sort_values('year')
label = f"{a}-{month_label[m]}"
ax.plot(sub['year'], sub['temp_anomaly_C'],
marker='o', color=palette[a], linestyle=linestyles[m], label=label)
# 趋势线
x = sub['year'].values
x0 = x - x.min()
k, b = np.polyfit(x0, sub['temp_anomaly_C'].values, 1)
yhat = k * x0 + b
ax.plot(x, yhat, color=palette[a], linestyle=':', alpha=0.8)
# 统一轴
ax.set_ylim(0, 1.4)
ax.set_xlim(1994, 2024)
ax.set_xlabel("Year")
ax.set_ylabel("Temperature Anomaly (°C, baseline 1981–2010)")
ax.set_title("East Asia (10°N–55°N) | Jan & Jul Anomalies and Linear Trends")
ax.legend(ncol=2, frameon=True)
plt.tight_layout()
# 图2:城乡差异(Urban−Rural)
pivot = df.pivot_table(index=['year','month'], columns='area_type',
values='temp_anomaly_C').reset_index()
pivot['UR_gap'] = pivot['Urban'] - pivot['Rural']
fig2, ax2 = plt.subplots(figsize=(9,4.5), dpi=150)
for m, sub in pivot.groupby('month'):
sub = sub.sort_values('year')
ax2.plot(sub['year'], sub['UR_gap'], marker='o',
linestyle=linestyles[m], label=f"Gap {month_label[m]}", color='#2ca02c')
ax2.set_ylim(0, 0.35)
ax2.set_xlim(1994, 2024)
ax2.set_xlabel("Year")
ax2.set_ylabel("Urban − Rural Anomaly (°C)")
ax2.set_title("Urban–Rural Anomaly Gap (Jan vs Jul)")
ax2.legend(frameon=True)
plt.tight_layout()
# 图3:站点覆盖变化(按年均值)
stations = (df.groupby(['year','area_type'])['stations']
.mean()
.reset_index())
fig3, ax3 = plt.subplots(figsize=(9,4.5), dpi=150)
width = 3.5
years = sorted(stations['year'].unique())
for i, a in enumerate(['Urban','Rural']):
sub = stations[stations['area_type'] == a].sort_values('year')
offs = (-0.5 if a == 'Urban' else 0.5) * 2.0
ax3.bar(sub['year'] + offs, sub['stations'], width=3.0,
color=palette[a], alpha=0.8, label=a)
ax3.set_ylim(0, 200)
ax3.set_xlim(1992, 2026)
ax3.set_xlabel("Year")
ax3.set_ylabel("Average Stations (Jan & Jul)")
ax3.set_title("Station Coverage by Area Type")
ax3.legend(frameon=True)
plt.tight_layout()
plt.show()
# 控制台输出:趋势表
print(trend.sort_values(['area_type','month']))
可复现代码(Python/Matplotlib/Seaborn):
import pandas as pd, numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
# ----- 参数 -----
SEASONS = {1:"Jan",4:"Apr",7:"Jul",10:"Oct"}
COLOR = {"Jan":"#d62728","Apr":"#2ca02c","Jul":"#1f77b4","Oct":"#9467bd"}
# ----- 数据 -----
csv = """date,lat_band,temp_anomaly_C,sea_ice_extent_mkm2
1980-01,70N–90N,0.12,15.2
1980-04,70N–90N,0.08,14.1
1980-07,70N–90N,-0.05,9.1
1980-10,70N–90N,0.10,10.7
1990-01,70N–90N,0.35,14.7
1990-04,70N–90N,0.22,13.6
1990-07,70N–90N,0.10,8.8
1990-10,70N–90N,0.28,10.3
2000-01,70N–90N,0.62,14.1
2000-04,70N–90N,0.47,12.7
2000-07,70N–90N,0.35,7.8
2000-10,70N–90N,0.55,9.6
2010-01,70N–90N,1.21,13.5
2010-04,70N–90N,1.05,12.0
2010-07,70N–90N,0.92,6.9
2010-10,70N–90N,1.16,8.8
2020-01,70N–90N,1.98,12.9
2020-04,70N–90N,1.72,11.5
2020-07,70N–90N,1.48,6.3
2020-10,70N–90N,1.83,8.1
2024-01,70N–90N,2.35,12.6
2024-04,70N–90N,2.10,11.1
2024-07,70N–90N,1.72,6.0
2024-10,70N–90N,2.06,7.7
"""
df = pd.read_csv(pd.compat.StringIO(csv))
df["date"] = pd.to_datetime(df["date"])
df["year"] = df["date"].dt.year
df["month"] = df["date"].dt.month
df = df[df["month"].isin(SEASONS.keys())].copy()
df["season"] = df["month"].map(SEASONS)
# 年度季节均值(四季均值)
annual = df.groupby("year", as_index=False).agg(
temp=("temp_anomaly_C","mean"),
ice=("sea_ice_extent_mkm2","mean")
)
# ----- 图1&图2:分季节时间序列 -----
fig, axes = plt.subplots(2,2, figsize=(11,7), sharex=False)
axes = axes.ravel()
for i, (m, name) in enumerate(SEASONS.items()):
d = df[df["season"]==name].sort_values("year")
# 温度
ax = axes[i]
ax.plot(d["year"], d["temp_anomaly_C"], marker="o", color=COLOR[name], label=f"{name} Temp")
# OLS 趋势
slope, intercept, r, p, se = stats.linregress(d["year"], d["temp_anomaly_C"])
x = np.array([d["year"].min(), d["year"].max()])
ax.plot(x, intercept + slope*x, color=COLOR[name], linestyle="--", alpha=0.7,
label=f"Trend: {slope*10:+.2f} °C/dec")
ax.set_title(f"{name} Temperature Anomaly")
ax.set_ylabel("°C anomaly")
ax.grid(True, alpha=0.3)
ax.legend()
fig.tight_layout()
plt.show()
fig, axes = plt.subplots(2,2, figsize=(11,7), sharex=False)
axes = axes.ravel()
for i, (m, name) in enumerate(SEASONS.items()):
d = df[df["season"]==name].sort_values("year")
# 海冰
ax = axes[i]
ax.plot(d["year"], d["sea_ice_extent_mkm2"], marker="o", color=COLOR[name], label=f"{name} Ice")
# OLS 趋势
slope, intercept, r, p, se = stats.linregress(d["year"], d["sea_ice_extent_mkm2"])
x = np.array([d["year"].min(), d["year"].max()])
ax.plot(x, intercept + slope*x, color=COLOR[name], linestyle="--", alpha=0.7,
label=f"Trend: {slope*10:+.2f} m km²/dec")
ax.set_title(f"{name} Sea Ice Extent")
ax.set_ylabel("million km²")
ax.grid(True, alpha=0.3)
ax.legend()
fig.tight_layout()
plt.show()
# ----- 图3:温度 vs 海冰(分季节) -----
fig, axes = plt.subplots(2,2, figsize=(11,7), sharex=False, sharey=False)
axes = axes.ravel()
for i, (m, name) in enumerate(SEASONS.items()):
d = df[df["season"]==name]
ax = axes[i]
sns.regplot(data=d, x="temp_anomaly_C", y="sea_ice_extent_mkm2",
scatter_kws=dict(color=COLOR[name]), line_kws=dict(color=COLOR[name], linestyle="--"), ax=ax)
r = d["temp_anomaly_C"].corr(d["sea_ice_extent_mkm2"])
ax.set_title(f"{name}: r={r:.2f}")
ax.set_xlabel("Temperature anomaly (°C)")
ax.set_ylabel("Sea ice extent (million km²)")
ax.grid(True, alpha=0.3)
fig.tight_layout()
plt.show()
# ----- 图4:年度季节均值 -----
fig, axes = plt.subplots(2,1, figsize=(10,6), sharex=True)
axes[0].plot(annual["year"], annual["temp"], marker="o", color="#ff7f0e", label="Annual mean temp anomaly")
slope, intercept, *_ = stats.linregress(annual["year"], annual["temp"])
x = np.array([annual["year"].min(), annual["year"].max()])
axes[0].plot(x, intercept + slope*x, linestyle="--", color="#ff7f0e", label=f"Trend {slope*10:+.2f} °C/dec")
axes[0].set_ylabel("°C anomaly"); axes[0].grid(True, alpha=0.3); axes[0].legend()
axes[1].plot(annual["year"], annual["ice"], marker="o", color="#17becf", label="Annual mean sea ice")
slope, intercept, *_ = stats.linregress(annual["year"], annual["ice"])
axes[1].plot(x, intercept + slope*x, linestyle="--", color="#17becf", label=f"Trend {slope*10:+.2f} m km²/dec")
axes[1].set_xlabel("Year"); axes[1].set_ylabel("million km²"); axes[1].grid(True, alpha=0.3); axes[1].legend()
fig.suptitle("Arctic (70N–90N) seasonal means (Jan/Apr/Jul/Oct)")
fig.tight_layout()
plt.show()
快速完成区域升温趋势对比,识别关键拐点与异常年份,生成可用于论文与研讨会的图表与要点摘要。
评估重点城区热风险,比较治理方案前后趋势,制作可汇报图表支持预算论证、项目立项与公众沟通。
制作一课一图的教学素材,展示本地与全球温度变化,配合讲解与讨论,提升学生与公众理解与参与度。
将零散的气候数据与关键参数,快速转化为可信、好看、可演示的全球变暖趋势图与精炼结论,覆盖研究报告、课堂教学、政策简报三大高频场景。通过标准化的分析与输出结构,显著缩短从数据到洞察的时间,提升说服力与传播效果,并支持按需定制图表风格、尺度与重点,让团队以更低门槛产出专家级成果。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期