2016-08-23 1 views
0

Я перекрывающей два бара участки с базовой графики (так как они имеют различные масштабы и до сих пор это был кошмар, чтобы сделать это на ggplot) следующих данных:xlim и ось х не то же самое в barplot

> str(pidf) 
'data.frame': 1300 obs. of 7 variables: 
$ spec1 : num 0.00192 0.00213 0.00151 0.00234 0.00133 ... 
$ spec2 : num 0.00241 0.00278 0.00189 0.00264 0.00155 ... 
$ spec3 : num 0.00231 0.00262 0.00187 0.00274 0.00165 ... 
$ spec4 : num 0.00209 0.0026 0.00166 0.00225 0.00165 ... 
$ spec5 : num 0.0025 0.00285 0.00188 0.00285 0.00181 ... 
$ numbers: int 1 2 3 4 5 6 7 8 9 10 ... 
$ ratios : num 0.59 0.642 0.544 0.625 0.567 ... 

Это мой код для участков:

par(mar = c(5,5,2,5)) 
barplot(pidf$ratios, col = "skyblue", ylim = c(0, 1), 
ylab = "Sequenced Base Ratios", border = NA, main = "Chlorocebus tantalus") 
axis(1, at = round(seq(0, 1300, 100))) 
par(new = T) 
barplot(pidf$spec5, col = "chartreuse3", border = NA, ylim = c(0, 0.003), 
    axes = F, xlab = NA, ylab = NA) 
axis(side = 4) 
mtext(side = 4, line = 3, expression(pi)) 
legend("topright", legend=c(expression(pi), "Ratios"), cex = 0.75, 
    pch=c(15, 15), col=c("chartreuse3", "skyblue")) 

Когда я запускаю этот код ось х короче, чем данные Если я указываю xlim = c(1,1300) на первом графике, то я получаю эту

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

ответ

0

Я думаю, проблема заключается в том, что бары не устанавливаются автоматически на единицу интервалов. По умолчанию barplot добавляет пробел в 0,2 единицы между барами (см. ?barplot, поиск «пространства»). Например, если у нас есть 20 баров, правый край оси х при х = 24:

z <- 1:20 
barplot(z) 
axis(side=1,at=c(0,24)) 

enter image description here

Для вашего приложения это, вероятно, самый простой, чтобы соответствовать, указав space=0:

barplot(z,space=0) 
axis(side=1,at=c(0,20)) 

enter image description here

+0

Такое легкое решение hahah, спасибо! –

Смежные вопросы