gpt4 book ai didi

r - ggplot : labeling x axis in lineplot

转载 作者:行者123 更新时间:2023-12-04 14:54:46 24 4
gpt4 key购买 nike

很长一段时间以来,我都不希望在我的绘图 (ggplot2) 中拉直 x 轴的标签。挑战在于我有两个 geom_path,每个从不同的数据帧获取数据——我相信这在代码中会变得更清晰:

ggplot(data=dx, aes(x = year, y=en.x ))+
scale_y_continuous(breaks = scales::pretty_breaks(n = 2))+
geom_path(data=ps, aes(x, y, color = "Person 1", linetype="Person 1"), size=0.5)+
geom_path(data=pg, aes(x , y, color = "Person 2", linetype="Person 2"), size=0.5)+
scale_color_manual("",labels = c(Nutzer1, Nutzer2), values = c("Person 1" = Nutzer1Farbe, "Person 2" = Nutzer2Farbe)) +
scale_linetype_manual("",labels = c(Nutzer1, Nutzer2), values=c("Person 1"=Nutzer1Format, "Person 2"=Nutzer2Format))

目标是用数据框“dx”中的年份标记 X 轴,如 aes 参数所示。它有效!但前提是您禁用 geom_paths - 如下所示:

ggplot(data=dx, aes(x = year, y=en.x ))+
scale_y_continuous(breaks = scales::pretty_breaks(n = 2))+
#geom_path(data=ps, aes(x, y, color = "Person 1", linetype="Person 1"), size=0.5)+
#geom_path(data=pg, aes(x , y, color = "Person 2", linetype="Person 2"), size=0.5)+
scale_color_manual("",labels = c(Nutzer1, Nutzer2), values = c("Person 1" = Nutzer1Farbe, "Person 2" = Nutzer2Farbe)) +
scale_linetype_manual("",labels = c(Nutzer1, Nutzer2), values=c("Person 1"=Nutzer1Format, "Person 2"=Nutzer2Format))

我真的不明白为什么路径会像这样破坏标签——它一定是 aes 参数。

如果有人对此有解决方案,我将不胜感激!

最佳答案

这可以这样实现:

  1. 在调用 xspline 之前将您的原始月份变量转换为日期时间。这样,插值日期值可以很容易地通过例如转换回日期时间。 lubridate::as_datetime
  2. 除此之外,您还可以对数据集进行行绑定(bind),这使得绘图更容易一些
library(ggplot2)
library(tidyr)
library(dplyr)

datengesamt <- datengesamt %>%
# Convert to datetime
mutate(month = as.POSIXct(month))

plot(1, 1)

ps <- xspline(datengesamt[,1], datengesamt[,2], 1, draw=FALSE)
pg <- xspline(datengesamt[,1], datengesamt[,3], 1, draw=FALSE)

pp <- list("Person 1" = data.frame(ps), "Person 2" = data.frame(pg)) %>%
bind_rows(.id = "id") %>%
mutate(x = lubridate::as_datetime(x))

ggplot(pp, aes(x, y, color = id, linetype = id)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 2)) +
geom_path(size=0.5) +
scale_x_datetime(date_labels = "%Y")

enter image description here

关于r - ggplot : labeling x axis in lineplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68283218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com