【发布时间】:2018-02-23 13:53:44
【问题描述】:
是否可以使用 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))
解决方案:感谢@Jimbou!
使用axis.ticks.x = element_line(colour = "black", size = c(2, rep(1,6)))
导致这一点。非常适合日常数据!
【问题讨论】:
-
您好,欢迎来到 Stack Overflow,为了我们可以帮助您,请提供示例数据和您迄今为止尝试过的步骤。考虑How to make a great reproducible example,谢谢。
-
你试过this approach吗?
-
嘿@lisah,我添加了一个示例。 Lisah 也许我可以用 ifelse 做一些事情,将我示例的最后一行应用到每 7 个刻度。有什么想法我会怎么做?
-
嘿@jaySf 我添加了一个示例。见上面的评论
-
@Jimbou 这将如何改变实际轴刻度的大小。我不想更改刻度的文本,我想更改刻度本身的实际大小。