Spaces:
Sleeping
Sleeping
File size: 3,307 Bytes
1569336 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | # 图像推荐模块 (image_recommender)
图像推荐模块(`image_recommender`)是 ChartPipeline 框架的第六个处理环节,负责推荐与图表内容相关的图像和图标元素。
## 功能简介
本模块基于数据内容、主题和视觉设计需求,为可视化推荐相关的图像和图标元素。适当的图像可以增强数据叙事,提供上下文信息,增加视觉吸引力,并帮助用户更好地理解和记忆数据。模块通过智能匹配和筛选,推荐最适合当前数据和主题的视觉元素。
## 输入与输出
### 输入
模块接收包含以下字段的数据对象:
- `chart_type`: 图表类型推荐
- `datafacts`: 数据洞察
- `titles`: 生成的标题和副标题
- `layout`: 布局和变体配置
- `colors`: 配色方案
### 输出
模块向输入数据添加 `images` 字段,结构如下:
```json
{
"images": {
"field": {
"Still active": "data:image/svg+xml;base64,...",
"Ended": "data:image/svg+xml;base64,...",
"Time Period": "data:image/svg+xml;base64,...",
"Status": "data:image/svg+xml;base64,..."
},
"other": {
"primary": "data:image/svg+xml;base64,...",
"man": "data:image/svg+xml;base64,...",
"us_flag": "base64_encoded_image_data_for_us_flag"
}
}
}
```
### 图像字段说明
| 字段 | 类型 | 描述 |
|------|------|------|
| `field` | 对象 | 数据标记/标签图标,键为数据类别或值,值为对应的图像数据 |
| `other` | 对象 | 其他必要图像,如背景、装饰或主题相关图像 |
## 图像类型和功能
模块支持多种类型的图像元素,每种具有不同的功能:
1. **数据标记图标**
- 替代或增强常规数据点标记
- 通过图标形状直观表达数据类别
- 增加图表的辨识度和趣味性
2. **标签和轴图标**
- 增强坐标轴标签的视觉表达
- 提供数据类别的直观识别
- 减少文本阅读负担
3. **背景和装饰图像**
- 提供主题相关的视觉上下文
- 增强整体设计美感
- 创建情感联系和记忆点
4. **辅助解释图像**
- 提供对数据的补充说明
- 显示相关物理对象或概念
- 增强数据叙事的说服力
## 图像推荐策略
模块使用以下策略推荐最合适的图像:
1. **主题匹配**
- 基于数据主题和内容关键词匹配相关图像
- 考虑元数据中的描述和标题
2. **情感一致性**
- 匹配图像的情感基调与数据洞察的情感
- 避免视觉元素与数据叙事产生冲突
3. **视觉协调性**
- 选择与配色方案协调的图像
- 确保图像风格统一,避免视觉混乱
4. **功能适配性**
- 根据布局和图表类型选择合适尺寸和方向的图像
- 针对不同的使用场景选择适当的详细程度
## 使用示例
### 命令行调用
```bash
python -m modules.image_recommender.image_recommender --input input_data.json --output output_data.json
```
### 程序调用
```python
from modules.image_recommender.image_recommender import process
success = process(input='input_data.json', output='output_data.json')
if success:
print("图像推荐完成")
else:
print("图像推荐失败")
```
|