R 最佳拟合散点图和直线-两组

R 最佳拟合散点图和直线-两组,r,ggplot2,plot,R,Ggplot2,Plot,我是新来R的。我有一个关于男子和女子比赛时间的数据集。我要把它画在散点图上。现在我只想添加两行最合适的。一个是我关于男人的数据。一个是我关于女性的数据。有人能帮忙吗 #Clear out old variables rm(list=ls()) #Insert Data library(readxl) gender_data <- read_excel("Desktop/gender_data.xlsx") View(gend

我是新来R的。我有一个关于男子和女子比赛时间的数据集。我要把它画在散点图上。现在我只想添加两行最合适的。一个是我关于男人的数据。一个是我关于女性的数据。有人能帮忙吗

   #Clear out old variables
   rm(list=ls())

   #Insert Data
   library(readxl)
   gender_data <- 
   read_excel("Desktop/gender_data.xlsx")
   View(gender_data)
   library(ggplot2)

   #Matrix 
   times_df <- data.frame(gender_data)
   print(gender_data)

   #data set men data
   plot(x = gender_data$ "Olympic year", y = 
   gender_data$ "Men's winning time (s)",
     xlab = "year", ylab = "times", ylim = 
   c(7,13), col = "green", pch = "*")

   #data set women data
   points(x = gender_data$ "Olympic year", y = 
   gender_data$ "Women's winning time (s)", 
   col = "blue", pch = "`")
以下是我的数据:

gender_data <-
structure(list(`Olympic year` = c(1900, 1904, 1908, 1912, 1916, 
1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 
1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004
), `Men's winning time (s)` = c(11, 11, 10.8, 10.8, NA, 10.8, 
10.6, 10.8, 10.3, 10.3, NA, NA, 10.3, 10.4, 10.5, 10.2, 10, 9.95, 
10.14, 10.06, 10.25, 9.99, 9.92, 9.96, 9.84, 9.87, 9.85), 
`Women's winning time (s)` = c(NA, NA, NA, NA, NA, NA, NA, 12.2, 
11.9, 11.5, NA, NA, 11.9, 11.5, 11.5, 11, 11.4, 11.08, 11.07, 11.08, 
11.06, 10.97, 10.54, 10.82, 10.94, 10.75, 10.93)), 
class = "data.frame", row.names = c(NA, -27L))

尝试使用ggplot2和tidyverse函数。您可以重塑形状以保持年份的长久性,然后使用几何点作为散布样式。关于最佳拟合,您可以使用geom_smooth创建表示最佳拟合的线。另外,您可以避免使用method='lm',并将默认选项保留为less。代码如下:

library(dplyr)
library(tidyr)
library(ggplot2)
#Code
gender_data %>% pivot_longer(-c(`Olympic year`)) %>%
  ggplot(aes(x=factor(`Olympic year`),y=value,color=name,group=name))+
  geom_point()+
  geom_smooth(method = 'lm',se=F)+
  theme(axis.text.x = element_text(angle = 90),
        legend.position = 'top')+
  labs(x='Year',color='Variable')
输出:

默认选项是:

#Code 2
gender_data %>% pivot_longer(-c(`Olympic year`)) %>%
  ggplot(aes(x=factor(`Olympic year`),y=value,color=name,group=name))+
  geom_point()+
  geom_smooth(se=F)+
  theme(axis.text.x = element_text(angle = 90),
        legend.position = 'top')+
  labs(x='Year',color='Variable')
输出:

尝试使用ggplot2和tidyverse函数。您可以重塑形状以保持年份的长久性,然后使用几何点作为散布样式。关于最佳拟合,您可以使用geom_smooth创建表示最佳拟合的线。另外,您可以避免使用method='lm',并将默认选项保留为less。代码如下:

library(dplyr)
library(tidyr)
library(ggplot2)
#Code
gender_data %>% pivot_longer(-c(`Olympic year`)) %>%
  ggplot(aes(x=factor(`Olympic year`),y=value,color=name,group=name))+
  geom_point()+
  geom_smooth(method = 'lm',se=F)+
  theme(axis.text.x = element_text(angle = 90),
        legend.position = 'top')+
  labs(x='Year',color='Variable')
输出:

默认选项是:

#Code 2
gender_data %>% pivot_longer(-c(`Olympic year`)) %>%
  ggplot(aes(x=factor(`Olympic year`),y=value,color=name,group=name))+
  geom_point()+
  geom_smooth(se=F)+
  theme(axis.text.x = element_text(angle = 90),
        legend.position = 'top')+
  labs(x='Year',color='Variable')
输出:


这类问题通常与重塑数据有关。格式应为长格式,数据应为宽格式。请参见关于如何将数据从宽格式重塑为长格式的说明

这是该图的基本R解决方案

library(tidyr)

pivot_longer(gender_data, -`Olympic year`) -> gender_long

plot(value ~ `Olympic year`, gender_long, col = c("blue", "red"))
abline(lm(value ~ `Olympic year`,
          data = gender_long,
          subset = name == "Men's winning time (s)"),
       col = "blue")
abline(lm(value ~ `Olympic year`,
          data = gender_long,
          subset = name == "Women's winning time (s)"),
       col = "red")

这类问题通常与重塑数据有关。格式应为长格式,数据应为宽格式。请参见关于如何将数据从宽格式重塑为长格式的说明

这是该图的基本R解决方案

library(tidyr)

pivot_longer(gender_data, -`Olympic year`) -> gender_long

plot(value ~ `Olympic year`, gender_long, col = c("blue", "red"))
abline(lm(value ~ `Olympic year`,
          data = gender_long,
          subset = name == "Men's winning time (s)"),
       col = "blue")
abline(lm(value ~ `Olympic year`,
          data = gender_long,
          subset = name == "Women's winning time (s)"),
       col = "red")

你能发布样本数据吗?请使用DPU数据的输出编辑问题。或者,如果dputheadgender_数据的输出太大,则为20。@RuiBarradas有帮助吗?@Duck更好吗?@Duck,我得到的错误是找不到%>%函数。你知道这可能是什么吗?@SamLaski哦,是的,试着先加载dplyr和tidyr包。如果未安装,请安装它们。让我知道进展如何!你能发布样本数据吗?请使用DPU数据的输出编辑问题。或者,如果dputheadgender_数据的输出太大,则为20。@RuiBarradas有帮助吗?@Duck更好吗?@Duck,我得到的错误是找不到%>%函数。你知道这可能是什么吗?@SamLaski哦,是的,试着先加载dplyr和tidyr包。如果未安装,请安装它们。让我知道进展如何!你知道我如何改变x轴/y轴来扩展它们吗?@SamLaski在plot调用中尝试参数xlim和ylim。开始绘图时,必须设置轴限制。示例:xlim=C189020。您知道我如何更改x轴/y轴以扩展它们吗?@SamLaski在plot调用中尝试参数xlim和ylim。开始绘图时,必须设置轴限制。示例:xlim=C1890202。