portable online for formatting gnuplot offset pie-chart

formatting - online - gnuplot-haciendo uso del yrange en los gráficos circulares?



gnuplot portable (2)

Esto solo funciona para mí si no configuro un yrange.

Digamos que tengo un sample-time-overview.csv como

,avg,std,,,TProc,2267.5202096317,4573.0532262204 TParse,4.9922379603,138.6595434301,,,,, THash,86.4020623229,548.8593468508,,,,, TEnq,1.1181869688,2.0684998031,,,,, TInQ,1482.2243626062,4257.8024051927,,,,, TSend,2253.1871161473,4514.2823125251,,,,, TWait,1.7578696884,43.1050730747,,,,, TAnsw,14.3452407932,201.9216484892,,,,, TProcAll,2269.2780793201,4573.3927526674,,,,, TTotal,3853.3679320114,7095.0740689587,,,,,

donde no estoy interesado en la primera o las últimas dos líneas.

Básicamente copie y pegue el código del enlace de arriba con ajustes menores:

#!/usr/bin/gnuplot reset filename = "sample-time-overview" set terminal pngcairo size 500,500 enhanced font ''Verdana,10'' set output filename."_piechart.png" #set title "" unset border unset tics set xrange[-1:1.5] #uncommend yrange and the plotdisappears #set yrange[-1.25:1.25] centerX=0 centerY=0 radius=1 set datafile separator '','' set key off set style fill solid 1 stats filename.".csv" u 2 every ::1::7 noout prefix "A" angle(x)=x*360/A_sum percentage(x)=x*100/A_sum pos=0.0 colour=0 yi=0 plot filename.".csv" u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every::1::7 w circle lc var system(sprintf("display %s_piechart.png", filename))

esto termina luciendo como

Descomentando el yrange y comento el unset border no definido y se ve así:

que es muy molesto porque cuando trato de agregar etiquetas ...

plot filename.".csv" u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every::1::7 w circle lc var,/ "" u (1.5):(yi=yi+0.5/A_records):($1) every::1::7 w labels

esto es lo que va a ocurrir:

Lo cual sospecho es debido a la falta del rango (debido a que aparte de eso, el código no difiere mucho de lo que se publicó en la respuesta vinculada).

¿Cómo hago que funcione la maldita cosa?


Establecer yrange también influye en la ejecución del comando de stats . Por lo tanto, deberías intentar set yrange[-1.25:1.25] después del comando stats , no antes.

PD:

Trazando las etiquetas con

plot filename.''.csv'' u (1.5):(yi=yi+0.5/A_records):($1) every::1::7 w labels

no funciona para mi Tengo que quitar el signo de dólar:

plot filename.''.csv'' u (1.5):(yi=yi+0.5/A_records):1 every::1::7 w labels

Y tengo que ajustar los valores 1.5 y 0.5 un poco.


Es mejor configurar las propiedades del gráfico justo antes del comando de trazado. Otras rutinas (por ejemplo, stats y, por tanto, A_sum ) se verán afectadas por estas propiedades (por ejemplo, set yrange ). Es por eso que el gráfico circular desaparece.

Además, asegúrese de tener longitudes de unidad iguales para los ejes y (use una set size ratio -1 ). Si no, la circunferencia se dibujará con respecto al tamaño del lienzo, y no con respecto a los ejes. El gráfico circular aparecerá cortado de lo contrario (a menos que se proporcione un yrange apropiado).

Con algunas modificaciones, obtengo esta tabla:

Este es el código:

filename = ''sample-time-overview'' rowi = 1 rowf = 7 # obtain sum(column(2)) from rows 1 to 7 set datafile separator '','' stats filename.''.csv'' u 2 every ::rowi::rowf noout prefix "A" angle(x)=x*360/A_sum percentage(x)=x*100/A_sum # circumference dimensions for pie-chart centerX=0 centerY=0 radius=1 # 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 place for labels set yrange [-radius:radius] # [-1:1] #------------------------------------------------------------------- pos = 0 # init angle colour = 0 # init colour # 1st line: plot pie-chart # 2nd line: draw colored boxes at (xpos):(ypos) # 3rd line: place labels at (xpos+offset):(ypos) plot filename.''.csv'' 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 i+1,/ for [i=0:rowf-rowi] filename.''.csv'' u (xpos):(ypos(i)):(sprintf(''%05.2f%% %s'', percentage($2), stringcolumn(1))) every ::i+1::i+1 w labels left offset 3,0