首页 文章

R - 使用ggplot2和两个不同大小的数据集

提问于
浏览
0

我想为两个不同大小的数据集做一个散点图 .

想象一下,我有两个data.frames:df1,df2 . df1的行大小为100,df2的行大小为50.有没有办法用ggplot2做散点图?我搜索过但找不到任何东西 . 在线教程始终假设数据集大小相同,x轴的值相等 . 另外,我想在同一个图中绘制两个数据集,而不是并排绘制 .

以下是一些示例数据:

df1<-data.frame(X1=1:10,Y11=11:20,Y12=21:30,Y13=31:40)

df2<-data.frame(X2=1.5:10.5,Y21=1.5:10.5)

让我们假设X1是一列,其值以千米为单位测量距离 . Y11是具有Car1的燃料消耗值的矢量,Y12是具有Car2的燃料消耗值的矢量,等等 . 现在X2仍然是矢量,其值以千米为单位测量距离,与X1不同,但在相同的范围内 . Y21是改装Car1的燃料消耗量 . 我想把它们放在相同的散点图中,x轴是距离(km),y轴是燃料消耗

3 回答

  • 0

    如果您提供示例数据集,这将更容易回答 . 但这是你可以做的(确保每个data.frame具有相同的列名称):

    df1 <- data.frame(x = 1:50, y = 1:50)
    df2 <- data.frame(x = 100:1, y = 1:100)
    
    df1$cat <- "df1"
    df2$cat <- "df2"
    
    df <- rbind(df1, df2)
    
    library(ggplot2)
    ggplot(df, aes(x, y, color = cat))+
      geom_point()
    

    这给你这个:
    enter image description here

  • 0

    感谢MrFrick的评论,我想我明白了 .

    ggplot(data=df1) + geom_point(aes(x=X1,y=Y11, 
                              color="Car1"))+
      geom_point(data=df2,aes(x=X2,y=Y21),color="ModCar2"))
    
  • 0

    如果要将所有数据绘制在一起,那么最好重新整形数据 . 这是使用其他tidyverse函数的示例

    library(tidyr)
    library(dplyr)
    
    dd <- bind_rows(
      df1 %>% gather(car, mpg, -X1) %>% rename(X=X1),
      df2 %>% gather(car, mpg, -X2) %>% rename(X=X2)
    )
    
    ggplot(dd, aes(X, mpg, color=car)) + geom_point()
    

相关问题