R 重塑数据以引入次轴(ggplot2)
我正试图重塑我的数据,但我不知道怎么做。让我们使用简单的数据:R 重塑数据以引入次轴(ggplot2),r,ggplot2,R,Ggplot2,我正试图重塑我的数据,但我不知道怎么做。让我们使用简单的数据: a <- c(1,2,3,4,5,6) b <- c(21.810, 22.086, 21.972, 22.214, 21.871, 22.352) c <- c(411.6443, 412.8378, 411.9041, 413.6155, 402.0946, 411.6599) df <- data.frame(a,b,c) 编辑。这是我想要的图形类型的一个示例 我该怎么做呢?由于tjebo的担忧,更
a <- c(1,2,3,4,5,6)
b <- c(21.810, 22.086, 21.972, 22.214, 21.871, 22.352)
c <- c(411.6443, 412.8378, 411.9041, 413.6155, 402.0946, 411.6599)
df <- data.frame(a,b,c)
编辑。这是我想要的图形类型的一个示例
我该怎么做呢?由于tjebo的担忧,更新II请参见评论: 更恰当的方式:
geom_line()
ggplot(df, aes(x = a))+
geom_line(aes(y = b)) +
geom_point(aes(y =b)) +
geom_line(aes(y = c/10)) +
geom_point(aes(y =c/10))+
scale_y_continuous(sec.axis = sec_axis(~.*10, name = "second y"))
数据:
a 1)不要在aes中使用$2)不要使用第二个y轴-本博客还建议了一些选项,包括连接散点图,这是显示刚编辑的文章的一种很好的方式。你知道美学是否可以像我添加的图像一样?我的老师让我做这种类型的情节,我需要做一个研究(虽然不推荐)。谢谢你确定geom_点(y=…)
正在工作吗?我还没有试过,但我觉得有一个调用aes
missinge,即使它有效(我现在已经测试过了,而且确实有效,这让我非常惊讶)——我几乎不建议不要在aes调用中加入y。我建议您明确地设置美学,以免混淆自己和/或他人,并可能产生特殊和意外的副作用。好的,b的计算奇迹般地发生在传递给ggplot()的数据帧环境中。但它是给定顺序中的向量,不能作为一种美学。我很放心——也很明显,在你的例子中,这只是偶然发生的。考虑<代码>是的,这更好,因为你把Y传递到了全球美学中。问题在于第二种选择。让我来编辑,你就会明白我的意思了
df1 <- df %>%
mutate(c_transformed = c/(410.626/22)) %>%
pivot_longer(
cols = c(b, c_transformed),
names_to = 'names',
values_to = 'value'
) %>%
arrange(names)
p <- ggplot(df1, aes(x = a, y = value, color = names)) +
geom_line() +
scale_color_manual(values = c("blue", "red")) +
scale_y_continuous(sec.axis = sec_axis(~.*(410.626/22), name = "second y")) +
theme_classic()
p
ggplot(df, aes(x = a))+
geom_line(aes(y = b, color = "b")) +
geom_line(aes(y = c/(410.626/22), color = "c")) +
scale_y_continuous(sec.axis = sec_axis(~.*(410.626/22), name = "second y")) +
theme_classic()
ggplot(df, aes(x = a))+
geom_line(aes(y = b)) +
geom_point(aes(y =b)) +
geom_line(aes(y = c/10)) +
geom_point(aes(y =c/10))+
scale_y_continuous(sec.axis = sec_axis(~.*10, name = "second y"))
a <- c(1,2,3,4,5,6)
b <- c(21.810, 22.086, 21.972, 22.214, 21.871, 22.352)
c <- c(411.6443, 412.8378, 411.9041, 413.6155, 402.0946, 411.6599)
df <- data.frame(a,b,c)