使用ggplot2使每个第N轴标签变粗

时间:2018-02-23 13:53:45

标签: r ggplot2

是否可以使用ggplot2使轴上的每个第N个刻度变粗?我只想让轴刻度为粗体(小线),而不是文本。

这对于在绘图中显示每日数据时突出显示每7个刻度非常有用。我想每天保留刻度线。

我还没有找到关于这个主题的任何内容,任何帮助都将不胜感激!

编辑:以下是一个代码示例。我在最后一行扩展它以增加所有刻度的大小。我想要的是让每个第N个标签更大。例如每7日。由于我处理的是每天都在变化的数据,因此手动定义每7个手动工作是行不通的。

ls -ltrh data/databases/graph.db

解决方案:感谢@Jimbou! 使用library(ggplot2) library(lubridate) theme_set(theme_bw()) df <- economics_long[economics_long$variable %in% c("psavert", "uempmed"), ] df <- df[lubridate::year(df$date) %in% c(1967:1981), ] # labels and breaks for X axis text brks <- df$date[seq(1, length(df$date), 12)] lbls <- lubridate::year(brks) # plot ggplot(df, aes(x=date)) + geom_line(aes(y=value, col=variable)) + labs(title="Time Series of Returns Percentage", subtitle="Drawn from Long Data format", caption="Source: Economics", y="Returns %", color=NULL) + # title and caption scale_x_date(labels = lbls, breaks = brks) + # change to monthly ticks and labels scale_color_manual(labels = c("psavert", "uempmed"), values = c("psavert"="#00ba38", "uempmed"="#f8766d")) + # line color theme(axis.text.x = element_text(angle = 90, vjust=0.5, size = 8), # rotate x axis text panel.grid.minor = element_blank(), axis.ticks.x = element_line(colour = "black", size = 2)) 导致这一点。适合日常数据! enter image description here

1 个答案:

答案 0 :(得分:4)

您可以尝试:

ggplot(df, aes(x=date, y=value, color=variable)) + 
     geom_line() + 
     scale_color_manual(values = c("#00ba38", "#f8766d")) +
     scale_x_date(date_breaks = "1 year", date_labels ="%Y") +
     theme(axis.ticks.x = element_line(colour = "black", size = c(5, rep(1,5))),
       axis.text.x = element_text(angle = 90, vjust=0.5, size = c(15,rep(8,5))))

enter image description here

使用每个6th和文字大小进行说明。 您也可以使用中断和标签,但是当您复制所有中断和标签时必须使用以下内容,并且必须事先将其删除。

scale_x_date(labels = lbls[!duplicated(lbls)], breaks = brks[!duplicated(lbls)])