我在ggplot2中使用動態列名稱,但有些名稱是表達式。在這種情況下,如何讓ggplot2使用表達式作爲列名?下面是一個例子。使用表達式作爲ggplot2中的列名稱
library(ggplot2)
data <- data.frame(c(1,34,3,41,27,4,5,22), c(3,8,7,26,10,20,1,2))
names(data) <- c("name1", "name2")
rndidx <- sample(2)
ggplot(data, aes_string(names(data)[rndidx[1]])) + geom_line(aes_string(y=names(data)[rndidx[2]])) #This works fine
names(data) <- c("name1", "log(1+name2)")
ggplot(data, aes_string(names(data)[rndidx[1]])) + geom_line(aes_string(y=names(data)[rndidx[2]]))
#Error in eval(expr, envir, enclos) : object 'name2' not found
編輯:爲什麼我不能簡單地用其更容易處理列名的原因是因爲其繪製數據的功能(即存在包含一些呼叫ggplot一個繪圖功能)接收異構數據,其中列名時常變化,有時候是表情,有時候不是。我不希望結果圖扭曲標籤中的列名稱或其他地方,我可能想要在圖中使用它們。
我不明白你想達到什麼目的。 – Roland
如果您只想更改軸標籤,請使用'ylab'。 – Roland
@Roland請參閱最新的描述。我希望能夠使用ggplot2繪製任意的東西而不會扭曲原始列名稱。不幸的是,我對列名沒有太多的控制。軸標籤只是我需要保持完整的示例。 – Datoraki