我想为两个不同大小的数据集做一个散点图。
想象一下,我有两个data.frames:df1,df2。 df1的行大小为100,df2的行大小为50.有没有办法用ggplot2做散点图?我已经搜索过但无法找到任何内容。在线教程始终假设数据集大小相同,x轴的值相等。另外,我想在同一个图中绘制两个数据集,而不是并排绘制。
以下是一些示例数据:
SELECT * FROM service_provider WHERE id NOT IN (SELECT id FROM requests WHERE ongoing='0')
让我们想象X1是一列,其值以千米为单位测量距离。 Y11是具有Car1的燃料消耗值的矢量,Y12是具有Car2的燃料消耗值的矢量,等等。现在X2仍然是矢量,其值以千米为单位测量距离,与X1不同,但在相同的范围内。 Y21是改装Car1的燃油消耗量。我想把它们放在相同的散点图中,x轴是距离(km),y轴是油耗
答案 0 :(得分: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()
答案 1 :(得分: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()
答案 2 :(得分:0)
这是一个古老的问题,但是最近我已经使用比此处更快的方法解决了类似的问题
ggplot with 2 y axes on each side and different scales
也许您可以先按比例缩小一个数据集,然后尝试ggplot2中的“双y轴”功能,即
%nonassoc
其中p <– ggplot2(dataframe, ...)+...
p + scale_y_continuous(name, ..., sec.axis = sec_axis(...))
表示“第二轴”
请参阅
https://www.r-graph-gallery.com/line-chart-dual-Y-axis-ggplot2.html
有关详细信息。 R中的sec.axis
也有帮助。
答案 3 :(得分:-1)
感谢MrFrick的评论,我想我明白了。
ggplot(data=df1) + geom_point(aes(x=X1,y=Y11,
color="Car1"))+
geom_point(data=df2,aes(x=X2,y=Y21),color="ModCar2"))