r - 如何在 R 中转换数据框并制作多个折线图?
问题描述
我有一个如下的数据框
0-10 10-20 20-30 30-40
M 1 2.5 4 0.3
N 0.5 0.8 2.3 1
0-10、10-20 间隔是我的第一行,没有任何列标题。我想在同一张图上绘制两个折线图,分别描绘 y 轴上的 M 和 N 值以及 0-10、10-20 等间隔作为我的 X 轴。我该怎么做呢?如果我将间隔作为标题,那么我无法使用 ggplot 绘制这些图,因为我没有 aes() 的 ax 变量
解决方案
没有数据有点困难,但我创建了一些看起来像你描述的东西,减去第一行,其中包含你的 x 轴标签:
df <- structure(list(V1 = c(1, 0.5), V2 = c(2.5, 0.8), V3 = c(4, 2.3
), V4 = c(0.3, 1)), class = "data.frame", row.names = c("M",
"N"))
df
V1 V2 V3 V4
M 1.0 2.5 4.0 0.3
N 0.5 0.8 2.3 1.0
通常,您需要另一个方向的数据框,这里我们可以使用t
函数(变换):
library(tidyverse)
as_tibble(t(df))
# A tibble: 4 x 2
M N
<dbl> <dbl>
1 1 0.5
2 2.5 0.8
3 4 2.3
4 0.3 1
然后你可以把它重塑成适合ggplot的格式。
as_tibble(t(df)) %>%
mutate(x=row_number()) %>%
pivot_longer(-x) %>%
ggplot(aes(x=factor(x), y=value, group=name, col=name)) +
geom_line() +
scale_x_discrete(labels=c("0-10", "10-20", "20-30", "30-40"))
或者,您可以使用原始数据框的第一行作为标签。
推荐阅读
- python - 使用熊猫的频率密度图
- spring - RepositoryRestResource 以不同于 RepositoryRestController 的格式返回结果
- javascript - 如何为 NuxtJS 中的资产提供 cdn 链接?
- apache-kafka - Kafka Streams 输出主题可以在单独的集群上吗?
- apache-kafka - Kafka Streams - 定义具有容错能力的自定义关系/Non_Key_Value StateStore
- python - Python - 检测值/字符串列表是日期、时间、日期时间还是两者都不是
- javascript - 我的 JavaScript 代码中缺少什么?它在 WordPress 帖子中不起作用
- heroku - Heroku 构建失败:heroku-prebuild
- api - 从 WebJob 调用 Azure API/WebJob 和 Web api 之间的共享代码
- python - 如何使用具有不同来源和/或形状的多个 mgrid 计算值