#r #ggplot2 #plot #graph #dot
Вопрос:
Мне нужен точечный график для моего сайта ниже
mydf <- data.frame(city=c(rep(c("Rome","NY","LA"),3)),
old=c(11,23,13,24,12,13.5,15,17,22),
new=c(12,22,13.5,25,14,15,12,17,14),
method=c("a","a","a","b","b","b","c","c","c"))
my_cols <- c("red", "blue", " dark green")
grps <- as.factor(mydf$method)
dotchart(mydf$old, labels = mydf$city,
groups = grps, gcolor = my_cols,
color = my_cols[grps],
cex = 0.6, pch = 19, xlab = "value")
meth1<- mydf[mydf$method=="a",]
meth2<- mydf[mydf$method=="b",]
meth3<- mydf[mydf$method=="c",]
points(meth1$new, 1:nrow(meth1), col = "orange", pch = 16, cex = 0.6)
points(meth2$new, 1:nrow(meth2), col = "light blue", pch = 16, cex = 0.6)
points(meth2$new, 1:nrow(meth2), col = "green", pch = 16, cex = 0.6)
прежде чем добавлять точки(), я получаю график ниже, который я хочу взять за основу.
но когда я добавляю точки, все они появляются в нижней части графика. Я хочу, чтобы «новые» значения, соответствующие каждому методу, отображались в отдельной части графика, а сегментная линия соединяла старые и новые значения соответственно.
как я могу сделать это в своем коде? спасибо за любую помощь в этом.
Ответ №1:
Ось y на точечной диаграмме, под капотом, на самом деле просто целые числа. Таким образом, вы должны предоставить правильные значения по оси y, чтобы points()
:
points(meth1$new, 11:13, col = "orange", pch = 16, cex = 0.6)
points(meth2$new, 6:8, col = "light blue", pch = 16, cex = 0.6)
points(meth2$new, 1:3, col = "green", pch = 16, cex = 0.6)
Я достиг этих значений, просто взглянув на график и подсчитав. Обратите внимание, что не все эти точки появятся, если они находятся за пределами диапазона исходного dotchart
вызова. Вы можете настроить это, установив xlim = c(11,25)
или сделав что-то подходящее в dotchart
вызове.