在ggplot2中更改x轴刻度

时间:2017-12-13 13:31:49

标签: r dataframe plot ggplot2

我使用以下代码绘制我的数据框d(在下面提供):

ggplot(data=d, aes(x=ID, y=Value)) + geom_line() 

enter image description here

我现在想要改变x轴的轴刻度。为此,我使用:

ggplot(data=d, aes(x=d$ID, y=d$Value)) + 
  geom_line() + 
  scale_x_discrete(breaks=1:8,
                   labels=c("05/11", "29/11", "11/12", "23/12",
                            "04/01", "16/01", "28/01", "09/02"))

但是,结果并不像预期的那样。根本没有x轴刻度。 enter image description here

我的数据框d

> str(d)
'data.frame':    10 obs. of  4 variables:
 $ Value    : num  0.021 0.0436 0.0768 0.0901 0.1128 ...
 $ Statistic: Factor w/ 1 level "Variable": 1 1 1 1 1 1 1 1 1 1
 $ ID       : int  1 2 3 4 5 6 7 8 9 10
 $ Variable : chr  "Mean_Sigma0_VV" "Mean_Sigma0_VV" "Mean_Sigma0_VV" "Mean_Sigma0_VV" ...

> dput(d)
structure(list(Value = c(0.021008858735161, 0.0435905957091736, 
0.0767780373205124, 0.0901182900951117, 0.11277978896612, 0.0990637045976107, 
0.118897251291308, 0.10604101636234, 0.121525916187773, 0.104460360304768
), Statistic = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), class = "factor", .Label = "Variable"), ID = 1:10, Variable = c("Mean_Sigma0_VV", 
"Mean_Sigma0_VV", "Mean_Sigma0_VV", "Mean_Sigma0_VV", "Mean_Sigma0_VV", 
"Mean_Sigma0_VV", "Mean_Sigma0_VV", "Mean_Sigma0_VV", "Mean_Sigma0_VV", 
"Mean_Sigma0_VV")), .Names = c("Value", "Statistic", "ID", "Variable"
), row.names = c(NA, -10L), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

ID是一个数字列,因此ggplot2使用连续比例,而不是离散比例:

ggplot(data=d, aes(x=ID, y=Value)) + 
  geom_line()  + 
  scale_x_continuous(breaks=1:8,
                     labels=c("05/11", "29/11", "11/12", "23/12",
                              "04/01", "16/01", "28/01", "09/02"))

enter image description here

或者,如果您想使用离散比例,则需要将ID转换为因子。但是,在这种情况下,ggplot2通常不会将单独的ID值组合在一起,并将它们与一行连接起来。要实现这一点,您必须添加group = 1(将所有内容放入同一组)。

d$ID <- factor(d$ID)

ggplot(data=d, aes(x = ID, y = Value, group = 1)) + 
  geom_line() + 
  scale_x_discrete(breaks=1:8,
                   labels=c("05/11", "29/11", "11/12", "23/12",
                            "04/01", "16/01", "28/01", "09/02"))

enter image description here

你可以看到这两个数字差不多但不完全一样。超出数据限制的轴范围扩展对于离散和连续标度的工作略有不同。此外,连续刻度具有较小的网格线,而离散刻度则没有。