Измените размер точек в R, используя plot () с несколькими добавленными точками () - PullRequest
0 голосов
/ 17 октября 2018

Данные доступны здесь .

Я пытаюсь сгенерировать приведенный ниже график (доля лиц в год), за исключением того, что мне нужно масштабировать все точки (resF, resM, immF и immM) до количества наблюдений для каждого столбца (resFN, resMN, immFN и immMN).enter image description here

Код, который я использую для построения вышеуказанного графика, приведен ниже:

library (plotrix)

plot(resF~year,data=data, type="b", col="black", xlab="Settlement year", ylab="Number of individuals", bty="l", pch=17, ylim=c(0,1))
ablineclip(v=1993, col="grey95", lwd=14, y1=0)
ablineclip(v=1998, col="grey95", lwd=14, y1=0)
ablineclip(v=2005, col="grey95", lwd=14, y1=0)
ablineclip(v=2010, col="grey95", lwd=14, y1=0)
ablineclip(v=2014, col="grey95", lwd=14, y1=0)
points(resF~year,data=data, col="black", type="b", pch=17)
points(resM~year,data=data, col="grey", type="b", pch=16)
points(immF~year,data=data, col="red", type="b", pch=17)
points(immM~year,data=data, col="orange", type="b", pch=16)
legend("topright", c("Resident females","Resident males", "Immigrant females", "Immigrant males"), col=c("black", "grey","red", "orange"), pch=c(17, 16, 17, 16), box.lty=0)

Я строю resF и добавляю точки для resM, immF и immM.Я хочу масштабировать точки в соответствии с количеством наблюдений для каждого столбца.Например, resF потребуется изменить масштаб в соответствии с количеством наблюдений в столбце resFN, resM, масштабированным до числа в resMN и т. Д.

В зависимости от того, что у меня есть прочитайте , я должен быть в состоянии изменить размеры точек, добавив symbols(x=data$resFN, y=data$year, circles=sqrt(data$resFN/pi), inches=1/3, ann=F, bg="steelblue2", fg=NULL) к моему plot() коду.Я сталкиваюсь с проблемами, так как я добавляю несколько points() к исходному plot(), и я также изменяю масштаб в соответствии со значениями в разных столбцах.

Есть предложения о том, как я могу это сделать?

1 Ответ

0 голосов
/ 17 октября 2018

Например, я не обязательно рекомендую это конкретное масштабирование, но это дает вам основную идею.Я просто оценил бы баллы, как вы считаете нужным.В частности, вам необходимо решить, следует ли их масштабировать отдельно по категориям или одинаково по всем категориям.

plot(resF~year,data=data, type="b", col="black", xlab="Settlement year", 
     ylab="Number of individuals", bty="l", pch=17, ylim=c(0,1))
ablineclip(v=1993, col="grey95", lwd=14, y1=0)
ablineclip(v=1998, col="grey95", lwd=14, y1=0)
ablineclip(v=2005, col="grey95", lwd=14, y1=0)
ablineclip(v=2010, col="grey95", lwd=14, y1=0)
ablineclip(v=2014, col="grey95", lwd=14, y1=0)
points(resF~year,data=data, col="black", type="b", pch=17,cex = resFN / median(resFN))
points(resM~year,data=data, col="grey", type="b", pch=16,cex = resMN / median(resMN))
points(immF~year,data=data, col="red", type="b", pch=17,cex = immFN / median(immFN))
points(immM~year,data=data, col="orange", type="b", pch=16,cex = immMN / median(immMN))
legend("topright", c("Resident females","Resident males", "Immigrant females", "Immigrant males"), 
       col=c("black", "grey","red", "orange"), pch=c(17, 16, 17, 16), box.lty=0)

enter image description here

...