Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 自定义轴标签_R_Ggplot2 - Fatal编程技术网

R 自定义轴标签

R 自定义轴标签,r,ggplot2,R,Ggplot2,我有一个简单的geom_点plot,其中x变量是有序的,取5个值(编码1:5) 在绘图中,我想用5个相应的文本标签替换它。有可能在ggplot中实现吗?这里有一个可复制的示例,我认为它封装了您的问题(?) require(ggplot2) dat缩放x_离散应执行以下操作: x <- sample(1:5, 20, T) y <- rnorm(20) + x df <- data.frame(x = ordered(x), y = y) ggplot(df,aes(x,y)

我有一个简单的
geom_点
plot,其中
x
变量是有序的,取5个值(编码1:5)


在绘图中,我想用5个相应的文本标签替换它。有可能在ggplot中实现吗?

这里有一个可复制的示例,我认为它封装了您的问题(?)

require(ggplot2)

dat
缩放x_离散
应执行以下操作:

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])

x您应该能够使用
scale\u x\u 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)
库(ggplot2)

df不是一个大的ggplot用户,如果
x
是一个因素,那么
scale\u x\u discrete
不是暗示了这一点吗?如果是这样,直接调用它比在数据中获得正确的因子标签有什么好处?我可以问@Chase,因为他提供了相同的答案?@Gavin你是对的--
scale\u x\u discrete
仅用于覆盖默认因子标签。我想如果你有一个数据框,并且你想在不同的情况下以不同的方式绘制它(即每次使用不同的标签),这样你就不必每次都更改数据框,这是很有用的。@Gavin&@Prasad-我理解OPs问题的意思是,他有他想要表示为分类的数值,或者在这种情况下是序数。有趣的是,普拉萨德和我基本上得出了相同的答案。对于
ordered()
而不是
factor()
,是否有偏好?我明白了-我们的三个答案都是从两个不同的角度做相同的事情(AFAICT)。我倾向于修改正确存储的数据,从而得到我的答案;我只是想知道
scale\u x\u discrete()
@gappy的优缺点-这里的关键是将x轴转换为因子。@prasad和我提供的解决方案在ggplot调用本身(因子(x)
和有序(x)
位)中实现了这一点,而@Gavin在预处理步骤中处理它。所有三个答案的最终结果是, X轴在绘制之前被视为一个因素。@ GAPPY您的数据是R将考虑的因素-至少从您给出的简要描述来看。数据可以取1.5的值吗?如果可以,这些数据点应该得到什么标签?如果您的数据是有序的,那么您应该告诉R这一点,并将其存储为/强制为因子(
factor()
)或有序因子(
ordered()
)。如果你这样做,在很多情况下,它会做正确的事情。请看我的答案-如果您告诉R数据是一个因素,则绘制正确的曲线图。@Chase和@Prasad的答案将强制作为情节的一部分,并允许标签的运行时自定义。@Gavin-标签的运行时自定义…非常好的方式来总结我们三人在最后6条评论中跳舞的内容。不总是缩放x_离散工作,而应该使用缩放x_连续
dat2 <- within(dat, X <- factor(X, labels = letters[1:5]))
(p2 <- ggplot(dat2, aes(x = X, y = Y)) + geom_point())
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])
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)