Рядом =F не работает в барплоте в субплоте в R
Я пытаюсь составить столбчатые столбцы из кода на этой странице: столбцы наносятся на карту
Но следующий код, который содержит около =FALSE, по-прежнему рисует бок о бок, а не столбчатую диаграмму.
ddf = read.table(header=T, sep=",", text="
country, val1, val2, val3
Nigeria,5,10,8
China,8,12,20
Brazil,15,9,20
Italy,9,25,5
Australia,15,5,25
")
require (rworldmap)
sPDF <- joinCountryData2Map(ddf
, joinCode = "NAME"
, nameJoinColumn = "country"
, verbose = TRUE)
plot(getMap())
df <- merge(x=ddf, y=sPDF@data[sPDF@data$ADMIN, c("ADMIN", "LON", "LAT")], by.x="country", by.y="ADMIN", all.x=TRUE)
require(TeachingDemos)
for (i in 1:nrow(df))
subplot(barplot(height=as.numeric(as.character(unlist(df[i, 2:4], use.names=F))),
axes=F, beside=FALSE,
col=rainbow(3), ylim=range(df[,2:4])),
x=df[i, 'LON'], y=df[i, 'LAT'], size=c(.3, .3))
legend("topright", legend=names(df[, 2:4]), fill=rainbow(3))
В чем может быть причина и как я могу это решить?
1 ответ
Решение
Для того, чтобы к тому же работать, hight
должна быть матрица с 1 столбцом. Так что постарайтесь:
plot(getMap())
df <- merge(x=ddf, y=sPDF@data[sPDF@data$ADMIN, c("ADMIN", "LON", "LAT")], by.x="country", by.y="ADMIN", all.x=TRUE)
require(TeachingDemos)
for (i in 1:nrow(df))
height <- matrix(as.numeric(as.character(unlist(df[i, 2:4], use.names=F))), ncol=1)
subplot(barplot(height=height,
axes=F, beside=FALSE,
col=rainbow(3), ylim=range(df[,2:4])),
x=df[i, 'LON'], y=df[i, 'LAT'], size=c(.3, .3))
legend("topright", legend=names(df[, 2:4]), fill=rainbow(3))