#r #polygons
#r #полигоны
Вопрос:
У меня есть некоторый код построения, который я использовал ранее с данными, которые являются числовыми или целочисленными. Теперь у меня есть похожие данные, за исключением того, что один столбец — это символьные данные, какие?полигон говорит, что я могу использовать. Я боролся с этим и не могу решить ошибки, которые я получаю. Помогите, пожалуйста!
Мои данные:
Dem.plotting <- data.frame(
Group=c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Year=c("2012", "Dem", "Non-dem", "2012", "Dem", "Non-dem", "2012",
"Dem", "Non-dem"),
minGDP=c(17.1, 17.3, 20.2, 19.8, 20.3, 21.7, 20.7, 21.7, 22.6),
maxGDP=c(19.4, 20.3, 21.5, 20.5, 21.3, 21.9, 21.4, 22.5, 22.3),
Data=data.frame(Group, Year, minGDP, maxGDP))
Это код, который я успешно использовал раньше, но сейчас не работает:
yrange = range(Dem.plotting$Year)
xrange = range(Dem.plotting[,3:4])
plot(Year~minGDP,data=Dem.plotting,type="n",xlab="Log(GDP)",ylab="Year",
ylim=yrange,xlim=xrange)
dens = c(NA,20,40,NA,20,40,NA,20)
ang = rep(45,times=8)
fillcol = c("white","gray","gray","black","black","black","white","gray")
for (i in 1:nrow(Dem.plotting)){
with(Dem.plotting[i,],polygon(x=c(minGDP,maxGDP,maxGDP,minGDP),
y=c(Year 0.25,Year 0.25,Year-0.25,Year-0.25),
density=dens[Group],ang=ang,
col=fillcol[Group],
border="black"
)
)
}
Я получаю следующую ошибку при попытке настроить пустой график:
Error in plot.window(...) : invalid 'ylim' value
In addition: Warning message:
In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
Итак, R не нравится иметь символьный вектор для «Года», и я не знаю, как это исправить, а затем эта ошибка генерируется при попытке построить полигоны:
Error in Year 0.25 : non-numeric argument to binary operator
Я понимаю, что ему не нравится, что «Год» является символьным, а не числовым, но я подумал, что вы могли бы строить полигоны, используя символьные данные для вершин?
Любая помощь приветствуется!
Комментарии:
1. Я не думаю, что вы можете использовать символьные аргументы для
polygon()
. Я не уверен, откуда у вас такое впечатление в файле справки.2. стрелять. Я думаю, вы правы. Вы можете использовать символьные объекты в диапазоне, но вы правы, это не говорит об этом для polygon.
3. Какого результата вы ожидаете? Просматривая ваш код, первая ошибка, конечно, выдается
range(Dem.plotting$Year)
. Каким будет диапазон символьной переменной (которая содержит строку «2012»)?4. Я подумал, что это будет похоже на «уникальный» и будет набором уникальных строк в диапазоне.