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

Nie*_*efn 6 r ggplot2

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

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

我无法找到关于这个主题的任何内容,任何帮助将不胜感激!

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

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))  
Run Code Online (Sandbox Code Playgroud)

解决方案:感谢@Jimbou!使用axis.ticks.x = element_line(colour = "black", size = c(2, rep(1,6))) 导致这一点.适合日常数据! 在此输入图像描述

Rom*_*man 6

你可以试试:

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))))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

使用每一个6th和文本大小进行说明。您也可以使用中断和标签,但是在复制所有中断和标签时,必须事先使用跟随,而必须先删除它们。

scale_x_date(labels = lbls[!duplicated(lbls)], breaks = brks[!duplicated(lbls)]) 
Run Code Online (Sandbox Code Playgroud)