如何通过多个变量创建日趋势散点图

问题描述

我正在尝试通过跟踪几个变量来创建散点图。我想知道如何通过跟踪状态来显示日趋势。请让我知道需要提供什么。非常感谢你! 数据如下所示。

State Day1 Day2 Day3 Day4
CA    1    5     7    9
NY    10   8    20    90 
VT    4   6    9    10 

解决方法

基础 R

使用 matplot 一次获取所有行。但是数据必须转置,R使用列优先顺序。

matplot(t(df1[-1]),type = "l",lty = 1)
legend("topleft",legend = df1$State,col = 1:3,lty = 1)

enter image description here


ggplot2

对于包 ggplot2,这类问题通常与数据整形有关。格式应该是长格式,数据是宽格式。请参阅this post,了解如何将数据从宽格式重新调整为长格式。

library(ggplot2)

df1 |>
  tidyr::pivot_longer(-State,names_to = "Day") |>
  dplyr::mutate(Day = as.integer(sub("[^[:digit:]]+","",Day))) |>
  ggplot(aes(Day,value,color = State)) +
  geom_line()

enter image description here


数据

df1 <- read.table(text = "
State Day1 Day2 Day3 Day4
CA    1    5     7    9
NY    10   8    20    90 
VT    4   6    9    10 
",header = TRUE)
,

在 Stata 中,您需要一个 long 布局才能正常工作——就像在 R 中的 ggplot2 一样。在类似

之后
clear 
input str2 State Day1 Day2 Day3 Day4
CA    1    5     7    9
NY    10   8    20    90 
VT    4   6    9    10 
end 

reshape long Day,i(State) j(Time)
rename Day Whatever 
encode State,gen(Where)
xtset Where Time 

您可以查看 tslinextline。但是:如果您的真实数据是美国的 50 个州(加上 DC?波多黎各?关岛???),那么您的数据定义了 50?+ 条线,可能需要一些策略。