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

如何用Gnuplot实现类似Seaborn Hue的列分组聚类条形图?

Gnuplot实现Seaborn风格的聚类分组条形图(支持未知数量类别)

要实现类似Seaborn中hue参数的分组聚类条形图,核心是动态识别数据中的所有DS_TYPE类别,并自动分配条形位置与颜色。以下是完整解决方案:

核心思路

  1. 用Gnuplot的stats命令提取所有唯一的DS_TYPE值,自动获取类别数量N
  2. 计算每个分组条形的宽度与偏移量,确保同一arg1下的条形聚类排列
  3. 循环绘制每个类别的条形,自动生成区分颜色

完整代码示例

假设你的CSV数据文件为data.csv(带表头),格式如下:

DS_TYPE,arg1,arg4
TypeA,1,5.2
TypeB,1,4.8
TypeA,2,6.1
TypeB,2,5.5
TypeC,2,5.8
TypeA,3,7.0
TypeB,3,6.3
TypeC,3,6.7

# 1. 提取唯一的DS_TYPE类别
stats 'data.csv' using (strcol(1)) skip 1 nooutput
unique_types = word(STATS_strings, 1)
do for [i=2:STATS_num_strings] {
    unique_types = unique_types . ',' . word(STATS_strings, i)
}
N = words(unique_types)
bar_width = 0.8 / N  # 每个条形的宽度,总宽度占0.8个x轴单位

# 2. 设置图表样式
set style data histogram
set style histogram clustered gap 1
set style fill solid border -1
set boxwidth bar_width
set xtics rotate by -45 right  # 旋转x轴标签避免重叠

set xlabel 'arg1'
set ylabel 'arg4'
set title '按DS_TYPE分组的聚类条形图'

# 3. 循环绘制每个类别
plot for [type in unique_types] \
     'data.csv' skip 1 using ($2 - (N/2.0 - (strstrt(unique_types, type)-1)/N)*bar_width):4:xtic(2) \
     title type with boxes \
     lc rgb hsv(360*(strstrt(unique_types, type)-1)/(N-1), 0.7, 0.8)

关键细节说明

  • 动态类别识别:通过stats命令的STATS_strings和STATS_num_strings变量自动获取所有唯一DS_TYPE,无需手动指定类别数量
  • 条形偏移计算:$2 - (N/2.0 - (strstrt(unique_types, type)-1)/N)*bar_width确保同一arg1下的所有条形居中排列
  • 自动配色:利用HSV颜色空间,按类别数量均匀分配色调,保证类别间颜色区分明显
  • 多数据点处理:如果同一arg1+DS_TYPE组合有多个数据点,可先通过stats计算均值再绘制:
    # 先统计每个分组的arg4均值,输出到临时文件
    set table 'temp_grouped.dat'
    stats 'data.csv' skip 1 using (strcol(1)):2:4 nooutput
    unset table
    
    # 用统计后的均值数据绘制,需调整plot命令的列索引
    plot for [type in unique_types] \
         'temp_grouped.dat' using ($2 - (N/2.0 - (strstrt(unique_types, type)-1)/N)*bar_width):5:xtic(2) \
         title type with boxes \
         lc rgb hsv(360*(strstrt(unique_types, type)-1)/(N-1), 0.7, 0.8)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:25:32