2017-02-06 3 views
0

Я хотел бы изменить ось й или земельный участок в R. Вот мой пример:Изменение значений оси X в г

plot(cbind(result, result),xlim=c(max(result),min(result)), 
    ylim=c(min(result),max(result)), xaxt="n") 
axis(1, at=result) 

result 
## [1] 0.6256767 0.6833695 0.7671350 0.5205373 0.4932262 0.5852338 0.5088692 0.3379572 
## [9] 0.3420370 0.3029084 0.4677624 0.4822537 0.3047485 0.3852572 0.3186014 0.2009436 
## [17] 0.1882227 0.2090007 0.2654110 0.3334744 

enter image description here

Я хочу, чтобы новые значения на ось x от 1 до 20. Я пробовал использовать axis(1, at=seq(1, 20)), но это не сработало. Что мне делать?

+0

Вы явно установить пределы вашей оси х в вашем 'plot' вызова. Вы устанавливаете их для перехода от макс к минимуму «результата», поэтому грубо начать с 0,76 и спуститься до 0,18. Затем вы хотите добавить метки для целых чисел от 1 до 20? Они «работают» очень хорошо, они находятся недалеко от границы сюжета, как вы его определили. – Gregor

+0

Если вы хотите пометить точки 1:20, при любых значениях x, которые они встречаются, вы должны использовать 'at', чтобы указать, куда идут метки (может быть,' sort (result) '?) И' labels = 1: 20'. Подробнее см. Документацию '? Axis'. – Gregor

+0

Я хочу, чтобы ось x вместо значения 0,76, ..., 0,20, ..., была использована нумерация от 1 до 20 – Kim

ответ

0

Вот решение с минимальными изменениями к вашему примеру. В принципе, я создаю data.frame с номером наблюдения. Поскольку график делает все наблюдения в порядке убывания, я также делаю это для вновь созданного data.frame. Это то, что я использую в вызове axis.

result <-c(0.6256767,0.6833695,0.7671350,0.5205373,0.4932262,0.5852338,0.5088692,0.3379572, 
    0.3420370,0.3029084,0.4677624,0.4822537,0.3047485,0.3852572,0.3186014,0.2009436, 
    0.1882227,0.2090007,0.2654110,0.3334744) 

result_df <-data.frame(my_order=1:length(result),result=result) #add column with initial observation number 
result_df <-result_df[order(result_df$result, decreasing = TRUE),] #decreasing order 

plot(cbind(result, result),xlim=c(max(result),min(result)), 
    ylim=c(min(result),max(result)), xaxt="n") 
axis(1, at=result_df$result,labels=result_df$my_order,cex.axis=0.6) 

enter image description here

+0

Большое спасибо! – Kim