如何绘制包含大量因子的数据(Var1与Var2为直线图)

如何绘制包含大量因子的数据(Var1与Var2为直线图),r,plot,ggplot2,data-visualization,R,Plot,Ggplot2,Data Visualization,我有以下形式的一些数据: Factor Var1 Var2 1 100 1.5 2 150 1.2 3 90 1.9 ...... 1 80 2.0 2 96 2.1 3 50 2.9 我必须比较Var2和Var1在不同因素下的变化。我们的想法是找出Var1中的值范围,对应于Var2中的低值以及哪个因子。 我有多达32个因素 最好的办法是什么 到目前为止,我已经在ggplot中将其实现为

我有以下形式的一些数据:

Factor  Var1  Var2
1       100   1.5
2       150   1.2
3       90    1.9
......
1       80    2.0
2       96    2.1
3       50    2.9
我必须比较Var2和Var1在不同因素下的变化。我们的想法是找出Var1中的值范围,对应于Var2中的低值以及哪个因子。 我有多达32个因素

最好的办法是什么

到目前为止,我已经在ggplot中将其实现为一个线图(参见下图)

然而,图形非常杂乱,很难区分不同因素的图案,特别是因为颜色编码为渐变

我也试着用不同的形状来表示这些点

ggplot(data = df, aes(x = df$var1, y = df$var2, colour = df$factor)) +  
  geom_line(size=0.05) + 
  geom_point(size=0.8, aes(shape=factor(df$Factor))) + 
  coord_cartesian(ylim = c(0,5)) + 
  labs(x='var1', y='var2')
但这会给出一条警告信息(见下文),并且不会显示所有因素的符号

 # Warning messages:
 #    1: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to discriminate; you have 29. Consider specifying shapes manually if you must have them. 
可视化数据变化的最佳方法是什么?系数的数量可能有所不同(最多32个)

**正如建议的那样,我尝试了facet_wrap(参见下图)

为了比较各种因素,我想在所有图上加一条水平线。但是geom_hline(yintercept=2)不起作用,给出以下错误消息:

Error in `$<-.data.frame`(`*tmp*`, "PANEL", value = c(6L, 8L, 24L, 26L, : replacement has 1170 rows, data has 1

“$中的
错误如果因子级别具有内在顺序,则最好将其绘制为渐变,就像它们是数字一样:

df$Factor_numeric <- as.numeric(gsub("2MCT ", "", Factor))
ggplot(data = df,
       aes(x = var1,
           y = var2,
           colour = Factor_numeric) +  
  geom_line(size=0.05) + 
  scale_colour_gradient(name = "Your Factor",
                        labels = function(breaks)  paste0("2MCT ", breaks)) +
  coord_cartesian(ylim = c(0,5)) + 
  labs(x='var1', y='var2')

<代码> df$因子,数字>代码> FACETHYLATH(~因子)?如果不是,请考虑<代码>::GGPROGLID<<代码>,在这里,您可以通过双击图例来与最后一个情节进行交互,以放大特定的部分或特定的因素。然而,颜色是以渐变形式分配的,因此很难从图中清楚地比较,对于给定的var1值范围,哪个因子的Var2值更高。是否可以指定颜色或使用不同的符号?
Error in `$<-.data.frame`(`*tmp*`, "PANEL", value = c(6L, 8L, 24L, 26L, : replacement has 1170 rows, data has 1
df$Factor_numeric <- as.numeric(gsub("2MCT ", "", Factor))
ggplot(data = df,
       aes(x = var1,
           y = var2,
           colour = Factor_numeric) +  
  geom_line(size=0.05) + 
  scale_colour_gradient(name = "Your Factor",
                        labels = function(breaks)  paste0("2MCT ", breaks)) +
  coord_cartesian(ylim = c(0,5)) + 
  labs(x='var1', y='var2')
df$grouped_Factor <- NA
df$grouped_Factor[df$Factor %in% paste0("2MCT ", 101:108)] <- "G1"
df$grouped_Factor[df$Factor %in% paste0("2MCT ", 109:118)] <- "G2"
df$grouped_Factor[df$Factor %in% paste0("2MCT ", 119:124)] <- "G3"
df$grouped_Factor[df$Factor %in% paste0("2MCT ", 125:132)] <- "G4"

ggplot(data = df,
       aes(x = var1, y = var2, colour = Factor)) + 
  geom_line(size=0.05) +
  geom_point(size=0.8) +
  coord_cartesian(ylim = c(0,5)) +
  facet_wrap(~ grouped_Factor) +
  labs(x='var1', y='var2')