我可以使用df
绘制以下geom_text
的标签:
df <- data.frame(
x = c(610, 426, 569, 253),
y = c(-226, -276, -364, -185),
label = c("accomplishments per week", "hours worked per week", "perceived adequacy of accomplishments", "energy level"),
stringsAsFactors = FALSE
)
ggplot(df, aes(x, y)) + geom_text(aes(label = label))
但是,当尝试对真实数据使用相同的绘图机制时,会出现错误:
Error in FUN(X[[i]], ...) : object 'label' not found
这是为什么,并且如何可以解决?
这是我的真实数据df1
:
df1 <- structure(list(type = c("var", "var", "var", "var"),
id = c(1,2, 4, 7),
x = c(610, 426, 569, 253), y = c(-226, -276, -364, -185),
label = c("accomplishments per week", "hours worked per week", "perceived adequacy of accomplishments", "energy level"),
from = c(NA_real_,NA_real_, NA_real_, NA_real_),
to = c(NA_integer_, NA_integer_,NA_integer_, NA_integer_),
polarity = c(NA_character_, NA_character_, NA_character_, NA_character_),
group = c(1L, 1L, 1L, 1L)), .Names = c("type","id", "x", "y", "label", "from", "to", "polarity", "group"),
row.names = 7:10, class = c("cld", "data.frame")
)
df
type id x y label from to polarity group
7 var 1 610 -226 accomplishments per week NA NA <NA> 1
8 var 2 426 -276 hours worked per week NA NA <NA> 1
9 var 4 569 -364 perceived adequacy of accomplishments NA NA <NA> 1
10 var 7 253 -185 energy level NA NA <NA> 1
答案 0 :(得分:5)
您的df1
属于cld
和data.frame
类(请参见str
的上述输出的第二行)。似乎ggplot不喜欢该对象首先是cld
。为了解决这个问题,使用as.data.frame
会强制df1
成为data.frame
类。您可以使用class(df1)
进行检出,或查看下面的str(df1)
输出。注意“类”行。
> str(df1)
Classes ‘cld’ and 'data.frame': 4 obs. of 9 variables:
$ type : chr "var" "var" "var" "var"
$ id : num 1 2 4 7
$ x : num 610 426 569 253
$ y : num -226 -276 -364 -185
$ label : chr "accomplishments per week" "hours worked per week" "perceived adequacy of accomplishments" "energy level"
$ from : num NA NA NA NA
$ to : int NA NA NA NA
$ polarity: chr NA NA NA NA
$ group : int 1 1 1 1
如果将其强制为data.frame
,则可以正常工作。
ggplot(as.data.frame(df1), aes(x = x, y = y, label = label)) +
geom_text()