-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
enhancementNew feature or requestNew feature or request
Description
功能概述
目前 plot_multi_group_bar_figure 函数只支持组内比较(即同一组内的不同柱子之间的显著性),但无法进行跨组别比较(不同组之间相同位置的柱子)。在神经科学研究中,经常需要比较不同实验组之间相同条件下的数据差异,因此跨组别显著性标注是一个非常重要的功能。
具体需求
希望扩展 plot_multi_group_bar_figure 函数,使其能够支持:
- 跨组别比较:能够在不同组的相同位置柱子之间添加显著性星号和连线
- 灵活的比较方式:支持任意两组之间的比较,而不仅仅是相邻组
- 自定义p值:允许用户传入预计算的p值用于显著性判断
- 样式定制:保持与现有显著性标注一致的样式控制选项(颜色、字体大小等)
API设计建议
建议在现有函数参数基础上,增加以下参数:
def plot_multi_group_bar_figure(
# ... 现有参数 ...
cross_group_comparisons: list[tuple[int, int, int]] | None = None,
cross_group_p_values: list[float] | None = None,
cross_group_line_color: str = "0.5",
cross_group_asterisk_color: str = "k",
cross_group_fontsize: int = 10,
# ... 现有参数 ...
):参数说明:
cross_group_comparisons: 列表,每个元素为三元组(group1_index, group2_index, bar_index),表示要比较的两个组和柱子位置cross_group_p_values: 对应的p值列表,用于确定是否显示显著性星号cross_group_line_color: 跨组别连线的颜色cross_group_asterisk_color: 跨组别星号的颜色cross_group_fontsize: 跨组别星号的字体大小
示例用法
# 比较第0组和第2组的第1个柱子,以及第1组和第2组的第0个柱子
cross_comparisons = [
(0, 2, 1), # 比较组0和组2的第1个柱子
(1, 2, 0) # 比较组1和组2的第0个柱子
]
cross_p_values = [0.03, 0.01] # 对应的p值
plot_multi_group_bar_figure(
data=data,
group_labels=group_labels,
bar_labels=bar_labels,
statistic=True,
cross_group_comparisons=cross_comparisons,
cross_group_p_values=cross_p_values,
cross_group_line_color="red",
cross_group_asterisk_color="red"
)实现思路
- 在
_annotate_significance函数基础上,创建新的_annotate_cross_group_significance函数 - 根据
cross_group_comparisons参数获取要比较的柱子的实际x坐标位置 - 计算合适的y轴高度来绘制连线和星号,避免与组内显著性标注重叠
- 使用与现有代码一致的星号生成逻辑(、、)
- 确保跨组别标注不会与现有的组内标注冲突
这个功能将大大增强 plotfig 库在神经科学研究中的实用性,特别是在需要比较多组实验结果时。
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request