Вопрос по – gnuplot для группировки нескольких баров

8

Я использую gnuplot для создания графиков для нескольких тестов.
For each benchmark I have many configurations to plot. I want to plot a graph hit-rate(my y-axis) vs benchmark(x-axis). There will be multiple columns for each benchmark differentiated by their color.

Некоторое время назад я сгенерировал графики того же типа, используя некоторый скрипт на Python, но я не знаю, как это сделать в gnuplot.

Можем ли мы увидеть образец ваших данных? Перечислены ли критерии в числовом формате или по имени в вашем файле данных? andyras

Ваш Ответ

1   ответ
20

Это необработанные данные,languages.data:

Title   C   C++ Java    Python
"Writing code"  6   4   10  1
"Understanding code"    6   3   4   1
"Generating prime numbers"  3   1   2   10

С этим кодом:

set title "Benchmarks"
C = "#99ffff"; Cpp = "#4671d5"; Java = "#ff0000"; Python = "#f36e00"
set auto x
set yrange [0:10]
set style data histogram
set style histogram cluster gap 1
set style fill solid border -1
set boxwidth 0.9
set xtic scale 0
# 2, 3, 4, 5 are the indexes of the columns; 'fc' stands for 'fillcolor'
plot 'languages.data' using 2:xtic(1) ti col fc rgb C, '' u 3 ti col fc rgb Cpp, '' u 4 ti col fc rgb Java, '' u 5 ti col fc rgb Python

Предоставляет следующую гистограмму:

gnuplot histogram

Но я бы предложил использоватьр из которых синтаксис является более читабельным:

library(ggplot2)
# header = TRUE ignores the first line, check.names = FALSE allows '+' in 'C++'
benchmark <- read.table("../Desktop/gnuplot/histogram.dat", header = TRUE, row.names = "Title", check.names = FALSE)
# 't()' is matrix tranposition, 'beside = TRUE' separates the benchmarks, 'heat' provides nice colors
barplot(t(as.matrix(benchmark)), beside = TRUE, col = heat.colors(4))
# 'cex' stands for 'character expansion', 'bty' for 'box type' (we don't want borders)
legend("topleft", names(benchmark), cex = 0.9, bty = "n", fill = heat.colors(4))

Кроме того, он обеспечивает немного более симпатичный выход:

R histogram

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded prathmesh.kallurkar
Error: User Rate Limit Exceededtitle columnheadError: User Rate Limit Exceeded

Похожие вопросы