设置 R ggplot2 的 x 轴

use*_*875 2 r ggplot2

如何使 x 轴显示“xaxisTitles”向量中的文本?

这是我可以运行的代码:

require(ggplot2)
require(reshape)

xaxisTitles<- cbind("a","b","c","d","e","f","g","h","j","k")
df <- data.frame(time = 1:10,
             a = cumsum(rnorm(10)),
             b = cumsum(rnorm(10)),
             c = cumsum(rnorm(10)))
df <- melt(df ,  id = 'time', variable_name = 'series')

# plot on same grid, each series colored differently -- 
# good if the series have same scale
ggplot(df, aes(time,value)) + geom_line(aes(colour = series))+ theme(axis.text.x =     xaxisTitles)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Error in (function (el, elname)  : 
  Element axis.text.x must be a element_text object.
Run Code Online (Sandbox Code Playgroud)

jlh*_*ard 5

您收到错误的原因是theme(...)用于设置轴文本的外观(例如,颜色、字体系列、字体、大小、方向等),而不是文本的值。为此,正如 @SteveReno 指出的,您必须使用scale_x_discrete(...).

require(ggplot2)
require(reshape)
set.seed(321)
# xaxisTitles<- cbind("a","b","c","d","e","f","g","h","j","k")
xaxisTItles<- letters[1:10]   # easier way to do this...
df <- data.frame(time = 1:10,
                 a = cumsum(rnorm(10)),
                 b = cumsum(rnorm(10)),
                 c = cumsum(rnorm(10)))
df <- melt(df ,  id = 'time', variable_name = 'series')

# plot on same grid, each series colored differently -- 
# good if the series have same scale
ggplot(df, aes(time,value)) + 
  geom_line(aes(colour = series))+ 
  scale_x_discrete(labels=xaxisTitles)+
  theme(axis.text.x=element_text(face="bold",colour="red",size=14))
Run Code Online (Sandbox Code Playgroud)