如何提取字典键值,使用ezgraphics绘制与数值成正比的矩形及文本?
实现方法
你可以直接遍历字典的键值对完成绘图,无需提前拆分提取,具体逻辑如下:
- 首先初始化ezgraphics画布,根据你的字典最大数值设置合理的缩放比例,避免矩形超出画布范围
- 调用字典的
items()方法遍历,同时获取每一组国家名(键)和对应数值(值) - 按你需要的布局(横向/纵向柱状图)依次绘制正比于数值的矩形,再在对应位置绘制国家名文本
核心键值提取说明
如果你需要单独获取全部国家名和全部数值的列表,可分别调用以下方法:
- 国家名列表:
list(你的字典变量.keys()),返回按字典存储顺序排列的国家名列表 - 数值列表:
list(你的字典变量.values()),返回和国家名顺序一一对应的数值列表
如果是绘图场景更推荐直接遍历键值对,代码更简洁:
for 国家名, 对应数值 in 你的字典变量.items(): # 直接在循环内调用绘图方法,使用上面两个变量即可
完整示例代码(横向柱状图效果)
from ezgraphics import GraphicsWindow # 你的原始数据字典 country_data = {'Malaysia': 529.0, 'China': 466.0, 'Scotland': 450.0, 'Japan': 391.0, 'France': 363.0} # 画布和绘图参数配置 win = GraphicsWindow(800, 600) canvas = win.canvas() bar_width = 80 # 每个柱形的固定宽度 gap = 40 # 柱形之间的间隔 x_start = 60 # 第一个柱形的起始X坐标 y_base = 500 # 柱状图底部基线的Y坐标 scale = 0.8 # 数值缩放系数,可根据画布尺寸调整 current_x = x_start for country, val in country_data.items(): # 计算柱形高度,和数值成正比 bar_height = val * scale # 绘制矩形:参数依次为左上角X、左上角Y、宽度、高度 canvas.drawRect(current_x, y_base - bar_height, bar_width, bar_height) # 绘制国家名文本,居中对齐在柱形下方 canvas.drawText(current_x + bar_width/2, y_base + 20, country) # 移动X坐标到下一个柱形的起始位置 current_x += bar_width + gap # 保持绘图窗口显示 win.wait()
内容的提问来源于stack exchange,提问作者user17501894
相关产品推荐
相关产品推荐

