我喜欢ggplot,但很难定制一些元素,如X轴标签和网格线。问题的标题说明了一切,但这是一个可重复的例子:
可重复的示例
library(ggplot2)
library(dplyr)
# Make a dataset
set.seed(123)
x1 <- c('2015_46','2015_47','2015_48','2015_49'
,'2015_50','2015_51','2015_52','2016_01',
'2016_02','2016_03')
y1 <- runif(10,0.0,1.0)
y2 <- runif(10,0.5,2.0)
# Make the dataset ggplot friendly
df_wide <- data.table(x1, y1, y2)
df_long <- melt(df_wide, id = 'x1')
# Plot it
p <- ggplot(df_long, aes(x=x1,
y=value,
group=variable,
colour=variable )) + geom_line(size=1)
plot(p)
# Now, plot the same thing with the same lines and numbers,
# but with increased space between x-axis labels
# and / or space between x-axis grid lines.
Plot1
Plot2
当数据集变大时,问题就出现了,x轴上的标签开始重叠,如下所示:
到目前为止我尝试了什么:
我使用scale_x_discrete做了几次尝试here,但到目前为止我没有运气。真正让我感到困惑的是,我前段时间看到了一些关于这些事情的教程,但尽管经过两天激烈的谷歌搜索,我却找不到它。当我尝试新事物时,我将更新这一部分。 我期待着你的建议!
答案 0 :(得分:2)
如上所述,假设x1代表year_day,ggplot
为日期刻度提供合理的默认值。
首先将x1变为有效的日期格式,然后按照您的方式绘制:
df_long$x1 <- strptime(as.character(df_long$x1), format="%Y_%j")
ggplot(df_long, aes(x=x1, y=value, group=variable, colour=variable)) +
geom_line(size=1)
由于断开时间序列,情节看起来有点奇怪,但scales_x_date()
提供了一种自定义轴的简单方法:
http://docs.ggplot2.org/current/scale_date.html