R: две оси диаграммы регулировки

Я пытаюсь построить чат с двумя осями, вот код и прикрепленный сюжет,

Я должен сделать две корректировки к нему.

  • Я хочу построить линию с точками и точки должны быть посередине столбцов
  • При настройке правой боковой оси (т.е. оси (4)) отметки должны совпадать с левой боковой осью (то есть оси (2))

Код:

Region=c("North","South","East","West")
Sales=sample(500:1000,4)
Change=sample(1:10,4)/10
names(Sales)=Region
names(Change)=Region
barplot(Sales,ylim=c(0,1000))
par(new=T)
plot(Change,type="b",axes=F,ylim=c(0,1))
axis(4)
box()

С Уважением,

Шиваджи

2 ответа

Решение

Во-первых, сохраните ваш barplot как некоторый объект. Таким образом, вы получите координаты средних точек. Затем, чтобы добавить строку, вы можете использовать также функцию lines() и просто умножить Change значения с 1000. Затем для axis() функция питания at= ценности и labels= такой же как at=, просто делится на 1000.

x<-barplot(Sales,ylim=c(0,1000))
lines(x,Change*1000,type="b")
axis(4,at=seq(0,800,200),labels=seq(0,800,200)/1000)

введите описание изображения здесь

Вам нужно играть, чтобы установить ту же ось X на втором графике, вы получаете эту информацию от par("usr"), xaxs="i" это установить xlim точно, по умолчанию R немного увеличивает xlim, чтобы он выглядел лучше.

par(mar=c(5,5,2,5)) # change margins
x = barplot(Sales, ylim=c(0,1000)) # barplot, keep middle points of bars
mtext("Sales", 2, line=3) # first y-axis label
xlim = par("usr")[1:2] # get xlim from plot
par(new=TRUE) 
plot.new() # new plot
plot.window(xlim=xlim, ylim=c(0,1), xaxs="i", yaxs="i") # new plot area, same xlim
lines(x,Change,type="b") # the lines in the middle points
axis(4) # secondary y-axis
mtext("Change", 4, line=3) # secondary y-axis label
box()

сюжет

Другие вопросы по тегам