将数据框中的多列绘制成 R 中的散点图

问题描述 投票:0回答:1

好吧,我正在尝试绘制随时间变化的不同州的测试成绩的散点图。在数据框中,有多个未使用的列,以及正在使用的两种列类型。一列是州,数据是 2 个字母的州缩写。第二列类型是分数;这些列的标题为年份。不必要的列位于必要的列之间,数据一直到 2023 年。此外,每个州有两个条目,一个英语一个数学,我只想使用英语分数。例如。

|州|名称|主题|2016|2016sd|2016_eb|2016_eb_sd|2017|2017sd| |AL|阿拉巴马州|数学|46.867684|30.09090|132.3482|50.976749|46.4759|20.9475937| |AL|阿拉巴马州|ela|46.867684|30.09090|132.3482|50.976749|46.4759|20.9475937|

我正在尝试创建一个散点图,将州名称视为系列,x 轴是分数的年份(所以基本上是它来自的列的标题),y 轴实际上是分数的值。我想在图表上的每个数据点之间绘制线条,并且仅绘制 5 个州但所有可用年份的数据。该图应该看起来像这样。 图表示例

好吧,我一直在尝试很多东西,首先我想使用melt来使数据“长”,但我认为这会低调地破坏我的数据。我目前也在尝试使用 ggplot2 创建类似这样的图表:

 print( ggplot(School_data, aes(x = state.abb, y = ys_mn_2016_ol)) +
   geom_jitter(width = 0.1) +
   labs(title = "Average Test Scores in M",
        x = "Score",
        y = "Year")

x 和 y 只是占位符,因为我知道设置是错误的。我也试图做这样的事情:

ggplot()+
      geom_jitter(data=School_data, aes(x=2016,2017(SAME THING???), y=2016,2017(etc. IDK HOW TO DO THIS PART), color=state.abb),
                  alpha=0.5, width=0.2, height=0.0)+
        stat_smooth(data=School_data, aes(x=2016,2017(SAME THING???), y=2016 etc.,color=state.abb),
                    method="lm", se=F)+
      scale_color_manual(values=c("orange","mediumorchid", "turquoise"))+
      theme_bw()+
      xlab("Score")+
      ylab("Year")

这也不起作用,我试图添加行。

我知道我可能需要重新组织数据,但我觉得可以调出特定的组件。这不是为了作业或任何我只是想了解 R 并且喜欢数据组织或图形建议的东西。

r dataframe scatter-plot series
1个回答
0
投票

好的,我得到了一个可以工作的代码,但如果有人有建议,请告诉我。

#open stuff

library(dplyr)

library(tidyr)

#open dataset
School_data <- read.csv("School_data.csv", header=T)
head(School_data)

# data transformation
School_data_long <- School_data %>%
  pivot_longer(cols = starts_with("X20"), 
               names_to = "Year",
               values_to = "Score")



# Filter data to include only English scores and desired states
desired_states <- c("IA", "CA", "NY", "TX", "FL")
School_data_filtered <- School_data_long %>%
  filter(subject == "rla", stateabb %in% desired_states)

#  Plot the data
library(ggplot2)

ggplot(School_data_filtered, aes(x = Year, y = Score, color = stateabb, group=stateabb)) +
  geom_point() +
  geom_line() +
  scale_color_manual(values=c("forestgreen","mediumorchid", "skyblue","sienna", "pink"))+
  labs(title = "English Test Scores by State",
       x = "Year",
       y = "Score") +
  theme_bw()

图表

© www.soinside.com 2019 - 2024. All rights reserved.