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

Python中基于字典绘制Matplotlib图表问题:自定义选两种货币绘图

解决Matplotlib基于汇率字典生成指定货币对比图表的问题

我来帮你搞定这个汇率图表的问题!你的现有代码存在几个关键问题,没法直接生成想要的两种货币对比图表:

  • 直接使用exchange_rates.values()会拿到嵌套字典,Matplotlib没法直接把这种数据绘制成柱状图
  • 缺少选择指定两种货币的逻辑,原代码只是遍历了所有主货币
  • plt.xticks的代码不完整,没有正确获取主货币的标签

下面是完整的修正版代码,实现了选择任意两种货币生成对比柱状图的功能:

import matplotlib.pyplot as plt

exchange_rates = {
    "GBP": { "USD": 1.2, "EUR": 1.1 },
    "USD": { "GBP": 1.18, "EUR": 1.07 },
    "CZK": { "GBP": 28.7934, "EUR": 29.654, "USD": 40.345 }
}

def make_a_graph(currency1, currency2):
    # 准备主货币列表作为x轴标签
    base_currencies = list(exchange_rates.keys())
    # 提取两种目标货币的汇率,缺失的汇率用None标记(可按需替换为0或其他值)
    rates1 = [exchange_rates[base].get(currency1, None) for base in base_currencies]
    rates2 = [exchange_rates[base].get(currency2, None) for base in base_currencies]
    
    # 设置柱状图宽度,避免两组柱子重叠
    bar_width = 0.35
    x = range(len(base_currencies))
    
    # 绘制两组对比柱状图
    plt.bar([i - bar_width/2 for i in x], rates1, width=bar_width, label=currency1)
    plt.bar([i + bar_width/2 for i in x], rates2, width=bar_width, label=currency2)
    
    # 配置图表基础元素
    plt.xticks(x, base_currencies)
    plt.xlabel('Base Currency')
    plt.ylabel('Exchange Rate')
    plt.title(f'Comparison of {currency1} and {currency2} Exchange Rates')
    
    # 添加图例和辅助网格
    plt.legend()
    plt.grid(axis='y', linestyle='--', alpha=0.7)
    
    # 展示图表
    plt.show()

# 测试:生成USD和GBP的汇率对比图表
make_a_graph("USD", "GBP")

代码说明:

  • 函数make_a_graph接受两个参数,就是你想要对比的两种货币代号
  • 用dict.get()方法安全获取汇率,避免因某个主货币没有对应汇率而报错
  • 采用分组柱状图的形式,把两种货币的汇率并列展示,对比更直观
  • 补充了完整的图表标签、标题、图例和网格,让图表可读性更强

如果某个主货币没有其中一种货币的汇率(比如原字典里GBP没有CZK的汇率),代码会用None标记,对应位置不会绘制柱子,你也可以把None替换为0或者其他占位值,根据需求调整。

内容的提问来源于stack exchange,提问作者Andrew Shakespeare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:27