使用scale_x_discrete和scale_x_continuous自定义x轴刻度

Lit*_*Bee 2 r ggplot2

我想让我的x轴上的刻度看起来像这样(但不需要破折号)

3(12) - 5(20) - 7(28) - 9(36) - 11(44) - 13(52)

原始图是

在此输入图像描述

用.制成

  n.clusters mean.cluster mean.bucket   variable    value
1           3     21.64790    21.49858 sd.cluster 5.643380
2           5     21.63516    21.54975 sd.cluster 4.369756
3           7     21.55446    21.49889 sd.cluster 3.643280
4           9     21.59585    21.57022 sd.cluster 3.237870
5          11     21.63110    21.58452 sd.cluster 3.012060
6          13     21.55224    21.56104 sd.cluster 2.643777
7           3     21.64790    21.49858  sd.bucket 5.648886
8           5     21.63516    21.54975  sd.bucket 4.397690
9           7     21.55446    21.49889  sd.bucket 3.654752
10          9     21.59585    21.57022  sd.bucket 3.262954
11         11     21.63110    21.58452  sd.bucket 3.023834
12         13     21.55224    21.56104  sd.bucket 2.716441
Run Code Online (Sandbox Code Playgroud)

ggplot(data, aes(n.clusters, value, shape=variable, group=variable)) + 
  geom_line(size = 1) +
  geom_point(size = 3.5) +
  scale_x_continuous(breaks = seq(1, 13, 2)) +
  scale_shape_discrete(solid=F,
                       name = "Variable",
                       breaks = c("sd.cluster", "sd.bucket"),
                       labels = c("sd.cluster", "sd.bucket")) +
  theme_bw() +
  theme(axis.text=element_text(size=16),
        axis.title=element_text(size=16,face="bold")) +
  labs(x = "Number of cluster",
       y = "Value")
Run Code Online (Sandbox Code Playgroud)

正如这些链接所提到的,我在代码中做了一些更改 https://github.com/hadley/ggplot2/issues/501

自定义图形的x轴

并且得到了这些,但没有得到我想要的.

ggplot(data = mu.est.summary.long, aes(n.clusters, value, shape=variable, group=variable)) + 
  geom_line(size = 1) +
  geom_point(size = 3.5) +
  scale_x_discrete(breaks = c("3","5","7","9","11","13"),
                   labels = c("3(12)", "5(20)", "7(28)", "9(36)", "11(44)", "13(52)") +
  scale_shape_discrete(solid=F,
                       name = "Variable",
                       breaks = c("sd.cluster", "sd.bucket"),
                       labels = c("sd.cluster", "sd.bucket")) +
  theme_bw() +
  theme(axis.text=element_text(size=16),
        axis.title=element_text(size=16,face="bold")) +
  labs(x = "Number of cluster",
       y = "Value")
Run Code Online (Sandbox Code Playgroud)

scale_x_discrete:既没有使用limits=c(levels(n.clusters$data),也没有breaks=c(),也breaks= seq()没有工作.R一直说缺少什么......我错过了什么?

谢谢你的帮助.

Naz*_*zer 6

使用时scale_x_discrete,请确保x轴的变量不连续.如果使用数字标记x轴,则R将以连续方式读取它们,您需要指定as.factor(df$name)使用离散轴.