Especificamente definir cores de barras no histograma

2

Veja a pergunta atualizada abaixo!:

(1 material antigo) Eu tenho o seguinte código:

clear
reset
unset key
# Make the x axis labels easier to read.
set xtics rotate out
# Select histogram data
set style data histogram
# Give the bars a plain fill pattern, and draw a solid line around them.
set style fill solid border

set title "Intensity of luxA signal for different substances"

set output 'luxA.png'
set terminal png transparent nocrop enhanced font times 18 size 840,640 

set ylabel "Intensität"

set style histogram

plot 'luxA.dat' using 2:xticlabels(1)

E os seguintes dados:

Name    Value   Color
"SN wt" 1103    blue
"SN ΔΔ" 124.3333333333  blue
"SN -A" 367.3333333333  blue
"SN -B" 147.3333333333  blue
"10nM C100" 325.6666666667  red
"200nM C100"    207.3333333333  red
"300nM C100"    236.6666666667  red
"LB"    180.6666666667  green
"LuxX"  168 green
"only LB"   62  green
"only MQ"   64.6666666667   green
"LB&wt" 65.3333333333   green
"SN LuxX&wt"    73  green

Eu quero colorir cada barra de acordo com a coluna "Cor".

Também seria bom se eu pudesse agrupar os diferentes grupos um pouco mais próximos (menores distâncias entre grupos e maiores entre grupos).

(2 Novas perguntas e dados)

Novos dados (quarta linha para barras de erro (desvio)):

Name    Value   Color   Deviation
"SN wt" 1103    #006400 61.0
"SN ΔΔ" 124.3333333333  #006400 3.21
"SN -CI"    367.3333333333  #006400 25.38
"SN -B" 147.3333333333  #006400 20.74
"10nM C8"   325.6666666667  #0000FF 20.13
"200nM C8"  207.3333333333  #0000FF 28.7
"300nM C8"  236.6666666667  #0000FF 35.91
"1uM BDSF"  596.6666666667  #0000C6 44.12
"10uM BDSF" 545.3333333333  #0000C6 102.01
"15uM BDSF" 547 #0000C6 33.60
"1uM DSF"   596.3333333333  #00008B 98.47
"10uM DSF"  532 #00008B 21
"15uM DSF"  653.6666666667  #00008B 13.65
"LB"    180.6666666667  grey    20.13
"LuxA"  168 grey    20.07
"only LB"   62  grey    9.54
"only MQ"   64.6666666667   grey    20.03   
"LB \& wt" 65.3333333333   grey    3.79
"SN Lux \& wt" 73  grey    14.53

- > Com isso eu quero basicamente conseguir o que descrevi acima, mas com barras de erro. A solução sugerida abaixo funciona para as cores, mas não para o espaçamento no meu computador (Ubuntu, gnuplot 4.4 patchlevel 2) E isso é feito com caixas? É possível adicionar barras de erro às caixas. Estou um pouco perdido, conheço C e Python, mas essa sintaxe do gnuplot me assusta um pouco ...: - (

Então, eu gostaria de ter: - Barras de acordo com a cor - Mesmos grupos (de acordo com a cor) agrupados espacialmente (pequeno espaçamento em grupo, grande espaçamento entre grupos) - Barras de erro de acordo com a coluna 4 (não me interessa se é feito com caixas ou com histograma, desde que funcione: - |) - A solução de mgilson (Muito obrigado!) Pelo espaçamento me dá um erro (Veja abaixo). O que estou fazendo de errado? Eu uso exatamente como declarado ...

A propósito: Qual é o seu livro favorito de gnuplot por aí?

    
por Michael 20.11.2012 / 14:04

1 resposta

0

Isso pode ajudar você a começar:

colors='red blue green'
set for [c in colors] style line strstrt(colors,c) lc rgb c
plot 'test.dat' u (column(0)):2:(strstrt(colors,stringcolumn(3))):xtic(1) w boxes lc variable

Note que acabei com o estilo dos histogramas. Eu gosto de caixas melhor:).

Agora, para o espaçamento. Isso requer um pequeno truque com uma função in-line:

idx=0.0
c_old=''
xidx(c)=(idx=idx+(c eq c_old?1.:1.5),cold=c,idx) #increment by 1 if same as old color, otherwise increment by 1.5
set for [c in colors] style line strstrt(colors,c) lc rgb c  #set linestyle for given color
plot 'test.dat' u (xidx(strcol(3))):2:(strstrt(colors,strcol(3))):xtic(1) w boxes lc variable
    
por 20.11.2012 / 21:22