2013-03-21 3 views
1

Когда я рисую многослойный планшет в R, бары помещаются с равными промежутками между ними, а значения оси x используются только как метки. Я хочу, чтобы бары располагались ближе или дальше друг от друга на основе значений оси x. Может кто-нибудь помочь мне получить этот сюжет, используя R?Управление расстоянием между полосками в штабелированном стяжке

Edit:

# data.frame newtest 
     A B C D 
100 0.2 0.3 0.1 0.4 
400 0.3 0.5 0.1 0.1 
500 0.1 0.3 0.4 0.2 
600 0.4 0.2 0.2 0.2 
1000 0.1 0.5 0.1 0.3 
1500 0.3 0.2 0.2 0.3 
1600 0.4 0.1 0.3 0.2 
1700 0.1 0.1 0.7 0.1 
2500 0.3 0.2 0.1 0.4 

# plot 
barplot(t(as.matrix(newtest)), col = c("cyan", "lightblue", "yellow", "green"), 
      legend = colnames(newtest), cex.main = 0.5, cex.axis = 0.5, 
      cex.lab = 0.5, lwd = 0.02) 

Вот сюжет: barplot

Бруски просто помечены в соответствии с названиями строк. Но я хочу, чтобы штанги на 400 500 600 были ближе друг к другу, пустое пространство для представления без блоков для 700 800 900, затем планка на 1000, , затем пустая площадь до 1500, бары 1500, 1600, 1700 и т. Д.

+0

Привет! Пожалуйста, сделайте свое сообщение воспроизводимым, взглянув на [** Как сделать отличный воспроизводимый пример **] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- пример) для нас, чтобы помочь вам. Спасибо. – Arun

+1

Спасибо Арун. Я добавил примеры данных и код, который я использовал для построения графика. Я не могу опубликовать образ сюжета, который у меня есть. – Ganesh

+0

Я отредактировал ваше сообщение, добавил сюжет и отредактировал тег. Это не ggplot. – Arun

ответ

2

Учитывая, что ось й в barplot представляет собой категориальные переменную, я не думаю, что есть решение, кроме введения дополнительных фиктивных наблюдений в ваших данных:

extracolnames <- setdiff(seq(100,2500,by=100) ,rownames(newtest)) 
extracols <- replicate(length(extracolnames), rep(0,4)) 
colnames(extracols) <- extracolnames 
dat <- cbind(t(as.matrix(newtest)), extracols) 
dat <- dat[,order(as.numeric(colnames(dat)))] 
barplot(dat, col=c("cyan","lightblue","yellow","green"), legend=colnames(newtest), cex.main=0.5, cex.axis=0.5, cex.lab=0.5, lwd=0.02) 
Смежные вопросы