【问题标题】:Plot solid lines when you have uneven values in the x axis当 x 轴上的值不均匀时绘制实线
【发布时间】:2021-10-05 06:26:37
【问题描述】:

我试图使用ggplot 绘制一条线,但由于 x 值(天)甚至没有间隔,我没有得到一条实线。我尝试使用geom_smooth() 而不是使用geom_line(),但我得到了带有置信区间的线条。

我的数据如下所示:

#df
treatment day1 day2 day4 day6 day9
1         12,7 11,1 8,7  7,4  5,9
2         13,4 11,3 8,6  6,9  5,3
3         11,3 10,5 8,9  7,6  6,2

是否有任何其他几何表达式或方式来排列数据以绘制实心连续线? 提前致谢

【问题讨论】:

  • 你能给出绘图的代码吗?
  • 这类问题通常与重塑数据有关。格式应为长格式,数据为宽格式。请参阅this post,了解如何将数据从宽格式重塑为长格式。

标签: r plot line


【解决方案1】:

我不确定您到底想要什么,但它可能类似于以下内容:

library(tidyverse)

data <- tibble(treatment = 1:3,
       day1 = c(12.7, 13.4, 11.3),
       day2 = c(11.1, 11.3, 10.5),
       day4 = c(8.7, 8.6, 8.9),
       day6 = c(7.4, 6.9, 7.6),
       day9 = c(5.9, 5.3 ,6.2))

data %>% 
  pivot_longer(-treatment, names_to = "days", names_prefix = "day") %>% 
  mutate(days = as.integer(days),
         treatment = as.character(treatment)) %>% 
  ggplot(aes(days, value, color = treatment)) +
  geom_line()

如果不是这种情况,指定希望获得的图形(x 和 y 变量)和运行的代码会很有帮助。

【讨论】:

  • mutate 中,强制转换为treatment = factor(treatment)
  • 谢谢你,这是我正在寻找的图表类型
【解决方案2】:

您可以使用来自reshape2 包和基本图形的melt

d1 <- reshape2::melt(d0, id=1, variable.name = "day") |>
  transform(day=as.numeric(gsub('day', '', day))) 

plot(value ~ day, d1, type='n', main='My Plot')
by(d1, d1$treatment, \(x) lines(value ~ day, x, col=x[1, 1] + 1))
legend('topright', legend=1:3, title='Treatment', lty=1, col=2:4, cex=.8)


数据

d0 <- read.table(header=T, text='treatment day1 day2 day4 day6 day9
1         12,7 11,1 8,7  7,4  5,9
2         13,4 11,3 8,6  6,9  5,3
3         11,3 10,5 8,9  7,6  6,2', dec=',')

【讨论】:

  • 感谢我正在寻找的那种情节
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
相关资源
最近更新 更多