如何绘制包含大量因子的数据(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')