首页 > 解决方案 > 如何在 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 变量

标签: rdataframeggplot2

解决方案


没有数据有点困难,但我创建了一些看起来像你描述的东西,减去第一行,其中包含你的 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"))

或者,您可以使用原始数据框的第一行作为标签。

在此处输入图像描述


推荐阅读