自定义轴标签

gap*_*ppy 55 r ggplot2

我有一个简单的geom_point图,其中x变量是序数,取5个值(编码1:5).

在图中我想用5个相应的文本标签替换它.是否可以在ggplot中完成?

Cha*_*ase 50

你应该可以这样做scale_x_discrete.

library(ggplot2)
df <- data.frame(x = 1:5, y = sample(1:10, 5, TRUE))

qplot(factor(x),y, data = df) + 
scale_x_discrete(breaks = 1:5, labels=c("foo","bar","baz","phi","fum")) +
xlab(NULL)
Run Code Online (Sandbox Code Playgroud)

  • 唉,如果x轴不是一个因素,这不起作用. (6认同)
  • @gappy - 这里的关键是将您的 x 轴转换为一个因子。@prasad 和我提供的解决方案在 ggplot 调用本身(`factor(x)` 和 `ordered(x)` 位)中执行此操作,而 @Gavin 在预处理步骤中处理它。所有三个答案的最终结果是在绘图之前将“x 轴”视为一个因素。 (2认同)
  • @gappy您的数据*是*R会考虑的因素 - 至少从您给出的简要描述中得出.数据的值是否可以为1.5?如果这些数据点可以得到什么标签呢?如果您的数据*被*序,那么你应该让R这并存储为/强迫的因素(`因子()`)或有序因子(`排序()`).如果你这样做,它会在许多情况下做正确的事情.看看我的回答 - 如果告诉R数据是一个因素,那么绘制正确的图.@Chase和@Prasad的答案强制作为绘图的一部分,并允许标签的运行时自定义. (2认同)

Pra*_*ani 12

scale_x_discrete 应该这样做:

x <- sample(1:5, 20, T)
y <- rnorm(20) + x

df <- data.frame(x = ordered(x), y = y)

ggplot(df,aes(x,y)) + geom_point() + 
   scale_x_discrete(breaks = 1:5, labels = letters[1:5])
Run Code Online (Sandbox Code Playgroud)