使用 gnuplot 进行箱线图 - 为每个单独的图着色

问题描述 投票:0回答:1

我试图分别为每个单独的箱形图着色,但我正在努力弄清楚如何修改我的 gnuplot 脚本。任何帮助表示赞赏!这是我的代码:

set terminal pngcairo enhanced font 'Arial,12' size 800,800
set output 'quartiles_candlestick.png'

set style data boxplot
set key off  # Remove the legend

# Set the color and outline style for boxplots
set style line 1 lc rgb "black" lt 1 lw 2  # Black outline with line type 1 and line width 2
set boxwidth 0.5  # Adjust the width of the boxes
set logscale y

# Set boxplot fill color
set style fill solid 0.5 border lc rgb "black"  # Fill with blue and black borders

# Set custom x-axis labels
set xrange [0.5:5.5]  # Adjust the range slightly to provide more space around the boxplots

plot 'output_statistics.txt' using 1:3:2:6:5:xticlabels(8) with candlesticks title 'Min-Max Whiskers' whiskerbars, \
     '' using 1:4:4:4:4 with candlesticks lt -1 notitle

这是我的数据文件的结构

#x min     Q1          median      q3          max     width   label   color
1 132.5 151.34 317.48 733.92 1314.00 582.57 ALC2 #440154
2 142.2 201.04 808.40 1485.33 2297.41 1284.29 ALC3 #31688E
3 2562.0 3073.71 4340.40 6080.67 6781.62 3006.96 ALC4 #1F9E89
4 121.3 166.85 400.00 778.06 2949.24 611.21 ALC5 #6CCE59
5 69.4 112.68 125.49 146.99 271.52 34.31 ALC6 #FDE725

我希望在着色方面生成与此类似的图形:

Example plot

gnuplot boxplot
1个回答
0
投票

在数据中,您通过

#abcdef
定义颜色,但是,
#
是注释的默认字符。所以,你基本上是在注释掉你的颜色。如果您不能或不想更改输入数据中的颜色定义,可能有一种解决方法,但最简单的可能是将颜色定义为十六进制数字,例如
0xabcdef

另一件事是您的数据分布几乎两个数量级。对于较低的值,您只会看到黑色边框,但看不到填充颜色的框。因此,您可能想要

set logscale y

如果勾选

help candlesticks
,则会列出您可以添加颜色列并通过可变颜色使用它,即
lc rgb var

脚本:

### colored candlesticks plot
reset session

$Data <<EOD
#x min   Q1      median  Q3      max     width    label color
1  132.5  151.34  317.48  733.92 1314.00  582.57  ALC2  0x99759f
2  142.2  201.04  808.40 1485.33 2297.41 1284.29  ALC3  0x8eaabe
3 2562.0 3073.71 4340.40 6080.67 6781.62 3006.96  ALC4  0x85c7bc
4  121.3  166.85  400.00  778.06 2949.24  611.21  ALC5  0xace3a5
5   69.4  112.68  125.49  146.99  271.52   34.31  ALC6  0xfbf38e
EOD

set offsets 0.5,0.5,0,0
set boxwidth 0.4
set style fill solid 1.0 border lt -1
set logscale y
set yrange[50:10000]
set key noautotitle

plot $Data u 1:3:2:6:5:9:xticlabels(8) w candlesticks lc rgb var whiskerbars, \
        '' u 1:4:4:4:4 w candlesticks lt -1 lc "grey" ti 'Min-Max Whiskers'
### end of script

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.