R 让镶嵌面网格中的每个绘图都有自己的Y轴值
目前,我很难按照自己的喜好显示图表Y轴。我想要的是,每个单独的绘图显示的点宽度取决于它自己的分数。请参见下图,了解我拥有什么以及我想要什么 基本上,我希望每个图都依赖于它自己的索引,即剪影、戴维斯·博尔丁等,就像第一张图(左侧的卡林斯基·哈拉巴斯)所示 这是到目前为止的数据和代码R 让镶嵌面网格中的每个绘图都有自己的Y轴值,r,ggplot2,R,Ggplot2,目前,我很难按照自己的喜好显示图表Y轴。我想要的是,每个单独的绘图显示的点宽度取决于它自己的分数。请参见下图,了解我拥有什么以及我想要什么 基本上,我希望每个图都依赖于它自己的索引,即剪影、戴维斯·博尔丁等,就像第一张图(左侧的卡林斯基·哈拉巴斯)所示 这是到目前为止的数据和代码 algorithms <- as.factor(c(rep("kmeans", 4), rep("pam", 4), rep("cmeans", 4))) index <- as.factor(c(rep
algorithms <- as.factor(c(rep("kmeans", 4), rep("pam", 4), rep("cmeans", 4)))
index <- as.factor(c(rep("Silhouette", 12), rep("Carlinski-Harabasz", 12)
, rep("Davies-Bouldin",12)))
score <- c(0.12,0.08,0.07,0.05,0.1,0.07,0.09,0.08,0.13,0.11,0.1,0.1,142,106,84,74,128,
99,91,81,156,123,105,95,2.23,2.31,2.25,2.13,2.55,2.12,2.23,2.08,2.23,2.12,2.17,1.97)
clusters <- as.factor(rep(3:6,9))
indices <- data.frame(algorithms, index, score, clusters)
#Some ggplot code
ggplot(indices, aes(clusters, score)) +
geom_point(aes(size = score, color = algorithms)) +
facet_grid(.~index, scales = "free_y")
#I thought the scales function in facet grid might do the trick...
成功了。谢谢你指出这一点
更新答案2
此外,多亏了camille,更好的可视化方法是使用带有2个变量的facet\u grid
。因此,最终代码将为:
ggplot(indices, aes(clusters, score)) +
geom_point() + facet_grid(index ~ algorithms, scales = "free_y") +
theme_bw() + labs(y="Score per index", x="Clusters")
我遇到了这个问题,并且意识到尺度有稍微不同的解释:在
facet\u grid
中,尺度可以在每行/每列facet中自由更改,而在facet\u wrap
中,尺度可以在每一个facet中自由更改,因为行或列没有硬性的含义。把它想象成grid
执行宏观级别的缩放,而wrap
执行微观级别的缩放
facet\u grid
的一个优点是可以快速地将一个变量的所有值放在一行或一列中,从而很容易看到发生了什么。但是您可以在facet\u wrap
中模拟这一点,方法是将facet设置在一行或一列上,就像下面我使用nrow=1
所做的那样
库(tidyverse)
算法尝试使用facet\u wrap
facet\u网格(.~index,scales=“free\u y”)
?首先,两者之间有很好的解释。因为ggplot2备忘单并没有真正说明这一点。我必须说,将nrow=1
与position=“jitter”
结合使用并不能提高图表的阅读能力。例如,在我的数据集中,几个点具有相同的结果。因此,不清楚哪个点属于哪个集群。有趣的是,你提到的最后一个选项非常简洁。事实上,它把它想象得很好。我将更新我的答案(再次)并接受提供的答案。
ggplot(indices, aes(clusters, score)) +
geom_point() + facet_grid(index ~ algorithms, scales = "free_y") +
theme_bw() + labs(y="Score per index", x="Clusters")