2016-07-30 4 views
0

Я попытался запустить следующий скрипт, чтобы изменить ось x. Я следовал другим ответам, приведенным в Stack Overflow; однако я не понимаю, что я ищу. Оригинальная ось х от 0 до 1, но я хочу, чтобы изменить его от 0 до 20.Почему я могу изменить ось x? R

x<-c(0,0.1,0.2,0.25,0.30,0.35,0.40,0.60,0.90,1) 
y<-c(0,0.014,0.41165,0.258,0.57,0.57,0.1803,0.5844,0.10185,0.085) 
da<-cbind(x,y) 
dat=data.frame(da) 
plot(y~x,data=dat,xaxt="n") 
pas=c(0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20) 
axis(1, at=1:20,labels=pas) 

Этого скрипт производит фигуру с только 0 на последнюю отметку. Мне нужна ось x от 0 до 20. Спасибо

+0

Вы можете назвать 'plot' следующим' участок (у ~ х, данных = DAT, xaxt = "п", xlim = C (0,20)) ' – steveb

+0

Несколько комментариев , число элементов в 'x' равно 10, а в' y' - 11. 'pas' можно установить, просто выполнив' pas <- 0: 20' (вам не хватает 9 в вашем списке). Для создания фрейма данных вам не нужно 'cbind', вы можете просто сделать что-то вроде' data.frame (x = x, y = y) '. – steveb

+0

Итак, теперь y и x имеют одинаковые n. Я не хочу менять xlim. Я хочу заставить ось x иметь разные значения. от 0 до 20, а не от 0 до 1. Вот почему я хочу создать новую метку для оси x. Я сам объясняю? – Cebs

ответ

0

Я не уверен, почему вы пытаетесь это сделать, но следующее будет работать.

x  <- c(0,0.1,0.2,0.25,0.30,0.35,0.40,0.60,0.90,1) 
y  <- c(0,0.014,0.41165,0.258,0.57,0.57,0.1803,0.5844,0.10185,0.085) 
dat  <- data.frame(x = x, y = y) 
x.range <- c(0,20) 
x.labels <- x.range[1]:x.range[2] 
pas  <- seq(0, 1, length.out = length(x.labels)) 
plot(y ~ x, data = dat, xaxt = "n", xlim = c(0,1)) 
axis(1, at = pas, labels = x.labels, cex.axis=0.65) 

enter image description here

+0

Great Steveb! Это именно то, что мне нужно. Большое спасибо – Cebs

+0

@Cebs просто для того, чтобы быть ясным, если вы предпочитаете ответ 'ggplot', вы должны это принять. Который когда-либо наиболее правильно отвечает на вопросы для вас. – steveb

0

Возможно, вы пропустили xlim/ylim.

Возможно, вы имели в виду y axis? Затем просто использовать:

plot(y~x,data=dat,ylim=c(0,20)) 

plot(y~x,data=dat,xlim=c(0,20)) # Вы должны удалить «xaxt =„п“», чтобы увидеть ось х

Хотя в любом случае я не уверен, что это самая лучшая идея, учитывая диапазон данных.

Использование ggplot2

library(ggplot2) 
qplot(x,y,data=dat)+ scale_x_continuous(labels=c("0"="fake0","0.25"="fake5","0.5"="fake10",".75"="fake15","1"="fake20"))# replace 'fake#' with anything 

plot custom x Хотя я не знаю, почему вы пытаетесь это сделать.

+0

Спасибо, но я намерен полностью изменить ось x ... Не вводить другой xlim. Теперь, поскольку вы можете оси x от 1 до 1. Но я хочу изменить метку оси от 0 до 20 ... – Cebs

+0

Простым способом является преобразование значений x путем умножения на 20 и использование xlim. Но должен признать, что это немного странно. Почему вы хотите это сделать? – thisisrg

+0

Это всего лишь пример. В моем реальном предплеме мне нужно преобразовать ось x после построения графика не раньше. Если я попытаюсь умножить ось x после построения графика, я все равно не получу ее. Проблема связана с функцией оси.Но я не знаю, где проблема x <-c (0,0,1,0,2,0,25,0,30,0,35,0,40,0,60,0,90,1); y <-c (0,0.014,0.41165,0.258,0.57,0.57,0.1803,0.5844,0.10185,0.085); da <-cbind (x, y); dat = data.frame (da); plot (y ~ x, data = dat, xaxt = "n"); ось (1, x * 20,); – Cebs

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