ggplot x 轴标签,所有 x 值,geom_line 上的多行

问题描述 投票:0回答:1

我正在用

geom_line
绘制 ggplot。 x轴是
YEAR
,y轴是连续变量
N
。我怎样才能在 x 轴上绘制所有年份? 在美学上应用
factor(YEAR)
似乎不起作用,因为我在
linetype = STATUS
上按类型拆分 通常的
scale_x_continuous("year", labels = as.character(year), breaks = year)
也会返回错误

df样本(实际df有20年)

   YEAR       N STATUS       
  <int>   <int> <chr>        
1  2019 3704204 P
2  2020 2590358 P
3  2021 2240046 P
4  2019 5095171 I
5  2020 5783109 I
6  2021 3389832 I

有效的情节(隐藏了几年)

ggplot(df1, aes(YEAR, N+
  geom_line(aes(linetype = STATUS))

申请

factor(YEAR)
没用

ggplot(df, aes(factor(YEAR), N)) +
  geom_line(aes(linetype = STATUS))

它返回错误

Do you need to adjust the group aesthetic?
,但添加
group = 1
搞乱了情节

缩放 x 轴也不起作用

ggplot(df, aes(factor(YEAR), N)) +
  geom_line(aes(linetype = STATUS)) +
  scale_x_continuous("YEAR", labels = as.character(YEAR), breaks = YEAR)

返回

Error in check_breaks_labels(breaks, labels) : object 'YEAR' not found
(也试过变体和
scales_x_discrete
,同样的错误)

r ggplot2 axis axis-labels
1个回答
0
投票

两个有用的工具:

  1. scale_x_continuous()
    与其他
    scale_*()
    函数一样,允许您指定很多关于轴的结构和呈现方式的信息,包括
    breaks
    ,它确定刻度线的位置。如果你读过
    ?scale_x_continuous
    ,有很多方法可以指定
    breaks
    ——你可以传递一个固定中断的向量,或者一个函数来计算它们,或者让它们为你计算。文档提到
    scales::extended_breaks()
    ,这是一个有用的提示:{scales} 包包含许多用于指定此类事物的有用实用程序。
  2. scales::breaks_width()
    是一种指定“我想要它们之间宽度 {whatever} 的中断”的方法。在这种情况下,如果你想要每年,通过
    width = 1
library(ggplot2)

df1 <- data.frame(
    YEAR = c(2019L, 2020L, 2021L, 2019L, 2020L, 2021L),
    N = c(3704204L, 2590358L, 2240046L, 5095171L, 5783109L, 3389832L),
    STATUS = c("P", "P", "P", "I", "I", "I")
)

ggplot(df1, aes(YEAR, N, linetype = STATUS)) + 
    geom_line() + 
    scale_x_continuous(breaks = scales::breaks_width(1))

plot with unit x breaks

© www.soinside.com 2019 - 2024. All rights reserved.