GNUPLOT-在饼图中指定颜色
我正在尝试使用GNUPLOT生成饼图,我已经生成了绘图,并且使用数组为图例指定了颜色。这是代码,我用它作为参考 script.shGNUPLOT-在饼图中指定颜色,gnuplot,pie-chart,Gnuplot,Pie Chart,我正在尝试使用GNUPLOT生成饼图,我已经生成了绘图,并且使用数组为图例指定了颜色。这是代码,我用它作为参考 script.sh #!/usr/bin/gnuplot set terminal pngcairo nocrop enhanced size 800,400 font "Siemens Sans,8" set output 'output.png' filename = 'source.dat' rowi = 1 rowf = 2 # obtain sum(column(2)) f
#!/usr/bin/gnuplot
set terminal pngcairo nocrop enhanced size 800,400 font "Siemens Sans,8"
set output 'output.png'
filename = 'source.dat'
rowi = 1
rowf = 2
# obtain sum(column(2)) from rows `rowi` to `rowf`
set datafile separator ','
stats filename u 2 every ::rowi::rowf noout prefix "A"
# rowf should not be greater than length of file
rowf = (rowf-rowi > A_records - 1 ? A_records + rowi - 1 : rowf)
angle(x)=x*360/A_sum
percentage(x)=x*100/A_sum
# circumference dimensions for pie-chart
centerX=0
centerY=0
radius=0.2
# label positions
yposmin = 0.0
yposmax = 0.95*radius
xpos = 1.5*radius
ypos(i) = yposmax - i*(yposmax-yposmin)/(1.0*rowf-rowi)
#-------------------------------------------------------------------
# now we can configure the canvas
set style fill solid 1 # filled pie-chart
unset key # no automatic labels
unset tics # remove tics
unset border # remove borders; if some label is missing, comment to see what is happening
set size ratio -1 # equal scale length
set xrange [-radius:2*radius] # [-1:2] leaves space for labels
set yrange [-radius:radius] # [-1:1]
#-------------------------------------------------------------------
pos = 0 # init angle
colour = 0 # init colour
colors = "blue red"
# 1st line: plot pie-chart
# 2nd line: draw colored boxes at (xpos):(ypos)
# 3rd line: place labels at (xpos+offset):(ypos)
plot filename u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every ::rowi::rowf w circle lc var,\
for [i=0:rowf-rowi] '+' u (xpos):(ypos(i)) w p pt 5 ps 4 lc rgb word(colors,i+1),\
for [i=0:rowf-rowi] filename u (xpos):(ypos(i)):(sprintf('%05.2f%% %s', percentage($2), stringcolumn(1))) every ::i+rowi::i+rowi w labels left offset 3,0
生成饼图的源文件如下
源.dat
"Tipo","Valor"
"Periodo laboral",723
"Periodo no laboral",81
当我运行脚本时,我会得到一个output.png
文件,如下所示
output.png
正如您所见,饼图颜色与图例颜色不匹配。这是因为我可以很容易地设置图例颜色,这要归功于for
索引,但是为了生成饼图,我正在迭代每一个子句,因此我无法获得索引。我也尝试过类似的方法:
plot filename u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every ::rowi::rowf w circle lc rgb(word(colors, colour)),\
但我有以下错误:
“gnuplot/piechart.sh”,第49行:警告:此打印样式不适用于6列。设置为xyerrorbars
你能帮我吗?提前谢谢
已更新
我想我已经迈出了一步。我已经删除了plot命令的(color=color+1)
部分,现在我可以这样设置特定的颜色
plot filename u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every ::rowi::rowf w circle lc rgb word(colors,colour+1),\
但这会将饼图完全绘制成蓝色,我仍然需要索引或其他东西,因为它似乎颜色
不会改变其值。分段绘制饼图应该可以:
colorsrgb = "#0000FF #FF0000"
plot for [i=1:rowf-rowi+1] filename u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)) every ::i::i w circle lc rgb word(colorsrgb, i)
在Windows上使用Gnuplot 5.0.0进行测试