You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib/Seaborn复现YouGov的美英动物格斗信心差值图?

复现YouGov差值条形图的Matplotlib/Seaborn实现方案

要复现这款展示美英受访者信心差值的横向条形图,用Matplotlib或Seaborn都能轻松实现,下面是具体的代码示例和关键细节说明:

1. 准备数据

首先需要构造(或导入)包含动物名称、美英信心差值的数据集。这里用模拟数据示例(差值定义为美国受访者信心值 - 英国受访者信心值):

import pandas as pd

# 模拟差值数据,匹配原图表趋势
data = {
    'Animal': ['黑猩猩', '熊', '狼', '山狮', '鳄鱼', '鹰', '大白鲨', '大象', '老虎', '狮子'],
    'Diff': [12, 10, 8, 5, 3, -2, -5, -7, -10, -15]
}
df = pd.DataFrame(data)
# 按差值降序排序,让图表逻辑更清晰
df = df.sort_values('Diff', ascending=False)

2. Matplotlib实现

import matplotlib.pyplot as plt

# 设置画布大小
plt.figure(figsize=(8, 6))

# 根据差值正负分配条形颜色(正差蓝色,负差红色,匹配原图表风格)
bar_colors = ['#1a75ff' if diff > 0 else '#ff4c4c' for diff in df['Diff']]
bars = plt.barh(df['Animal'], df['Diff'], color=bar_colors)

# 添加中间的0基准线,区分正负差值
plt.axvline(x=0, color='gray', linestyle='--', alpha=0.7)

# 给每个条形标注具体差值
for bar in bars:
    bar_width = bar.get_width()
    # 根据正负调整标签位置,避免和条形重叠
    label_x = bar_width + 1 if bar_width > 0 else bar_width - 1
    plt.text(label_x, bar.get_y() + bar.get_height()/2, 
             f'{bar_width:+d}', va='center', fontsize=10)

# 设置图表标题和坐标轴标签
plt.title('美英受访者对打赢动物信心的平均差值(美国-英国)', fontsize=12)
plt.xlabel('信心差值', fontsize=10)
plt.ylabel('动物', fontsize=10)

# 自动调整布局,防止文字被截断
plt.tight_layout()
plt.show()

3. Seaborn实现

Seaborn可以更简洁地处理颜色映射,代码如下:

import seaborn as sns

plt.figure(figsize=(8, 6))

# 绘制横向条形图,用hue区分正负差值并分配颜色
sns.barplot(data=df, x='Diff', y='Animal', 
            hue=df['Diff'] > 0,
            palette={True: '#1a75ff', False: '#ff4c4c'},
            legend=False)

# 添加0基准线
plt.axvline(x=0, color='gray', linestyle='--', alpha=0.7)

# 标注差值数值
for idx, row in df.iterrows():
    label_x = row['Diff'] + 1 if row['Diff'] > 0 else row['Diff'] - 1
    plt.text(label_x, idx, f'{row["Diff"]:+d}', va='center', fontsize=10)

# 设置图表元素
plt.title('美英受访者对打赢动物信心的平均差值(美国-英国)', fontsize=12)
plt.xlabel('信心差值', fontsize=10)
plt.ylabel('动物', fontsize=10)

plt.tight_layout()
plt.show()

关键细节说明

  • 颜色选择:匹配原图表的蓝红配色,正差值用蓝色,负差值用红色,增强可读性
  • 数值标注:根据差值正负调整标签位置,避免和条形重叠
  • 排序处理:将差值从大到小排序,让图表趋势更直观
  • 基准线:添加灰色虚线作为0基准,清晰区分美英两国的信心差异

内容的提问来源于stack exchange,提问作者Aaron Elliot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:45:34