这是一个用于科研论文绘图的Python模块,采用模块化设计,将数据处理和静态绘图分离,以提供最大的灵活性和可维护性。每个模块都有独立的文档说明其详细实现。
-
统一的数据格式化系统
- 支持多种输入格式(CSV、Excel、文本等)
- 提供标准化的数据输出接口
- 灵活的格式转换机制
-
强大的统计分析工具
- 基础统计量计算
- 异常值检测和处理
- 数据分布分析
- 相关性分析支持
-
完善的数据验证
- 数据类型检查
- 数值范围验证
- 完整性校验
- 自定义验证规则
-
精确的样式控制
- 符合期刊要求的输出质量
- 精确的字体和尺寸控制
- 丰富的自定义选项
-
资源管理
- 自动内存管理
- 安全的文件操作
- 异常保护机制
-
多样的图表支持
- 箱型图
- 散点图
- 误差线图
- 分布图
Plot/
├── data_processing/ # 数据处理模块
│ ├── base.py # 数据处理基础类
│ ├── config.py # 数据处理配置
│ ├── processor.py # 处理器实现
│ ├── exceptions.py # 异常定义
│ └── utils/ # 工具函数
├── static_plot/ # 静态绘图模块
│ ├── base/ # 基础组件
│ │ ├── base_plotter.py # 基础绘图器
│ │ ├── base_config.py # 基础配置系统
│ │ ├── base_style.py # 基础样式系统
│ │ └── validators.py # 数据和配置验证
│ ├── box_plot/ # 箱型图组件
│ │ ├── box_config.py # 箱型图配置
│ │ ├── box_plotter.py # 箱型图绘制器
│ │ └── box_style.py # 箱型图样式
│ └── other_plots/ # 其他图表类型(未来扩展)
└── requirements.txt # 依赖包列表
{
"data": {
"values": Dict[str, List[float]] # 数据值
},
"metadata": {
"x_label": str, # X轴标签
"y_label": str, # Y轴标签
"unit": str # 单位(可选)
}
}
- 处理器配置:控制数据处理流程和验证规则
- 绘图配置:管理样式和布局参数
- 配置继承:支持模块间的配置复用和扩展
from data_processing.config import ProcessorConfig
from data_processing.processor import TableFileProcessor
from data_processing.utils.statistics import StatisticsCalculator
from data_processing.utils.formatters import BoxPlotFormatter
from static_plot.box_plot.box_config import BoxPlotConfig
from static_plot.box_plot.box_plotter import BoxPlotter
# 1. 数据处理配置
processor_config = ProcessorConfig(
input_path="data.csv",
validation_rules={"required_columns": ["A", "B"]}
)
# 2. 数据处理和统计分析
# 格式化数据
formatter = BoxPlotFormatter(
x_label="类别",
y_label="数值",
unit="mm"
)
with TableFileProcessor(processor_config, formatter) as processor:
# 基础处理
data = processor.process() # 处理数据、统计分析和格式化
plot_data = processor.to_standard_format() # 转换为标准格式
# 3. 绘图配置
plot_config = BoxPlotConfig()
plot_config.style.update({
"style": "ticks", # 使用刻度样式
"context": "paper", # 使用论文样式
"font_params": { # 设置字体参数
"family": "Arial",
"size": 8
},
"rc_params": { # 自定义RC参数
"axes.linewidth": 0.8,
"xtick.major.width": 0.8,
"ytick.major.width": 0.8
}
})
# 设置箱型图特定参数
plot_config.box_params.update({
"width": 0.5, # 箱体宽度
"notch": False, # 不显示凹槽
"showfliers": True # 显示异常值
})
# 4. 绘图
with BoxPlotter(plot_config) as plotter:
plotter.plot(plot_data)
plotter.save("output.pdf")
- 数据处理:NumPy, Pandas
- 静态绘图:Matplotlib, Seaborn
pip install -r requirements.txt
-
代码风格
- 遵循PEP 8规范
- 使用类型注解
- 编写文档字符串
- 注释复杂逻辑
-
测试要求
- 单元测试覆盖率>80%
- 包含边界条件测试
- 验证异常处理
- 检查资源释放
-
文档维护
- 及时更新模块文档
- 提供使用示例
- 记录重要变更
- Python >= 3.7
- 具体依赖版本见requirements.txt
- 确保数据符合标准格式要求
- 使用上下文管理器处理资源
- 参考各模块文档了解详细用法