我想使用ggplot在同一个图上绘制MAPE和准确度的线,以查看它们在不同集群上的变化。我尝试了不同的解决方案,如this post,但是,它们不工作。以下是我的数据:
data = structure(list(Clusters = c("1 Cluster", "2 Clusters", "3 Clusters",
"4 Clusters", "5 Clusters", "6 Clusters", "7 Clusters", "8 Clusters"
), Accuracy = c("100", "72.4", "60.5", "42.4", "34.6", "24.7",
"25.5", "22.4"), MAPE = c("138.604968", "130.1682745", "107.7288902",
"156.0743566", "126.7168457", "144.2963746", "130.2850425", "134.7150458"
)), class = "data.frame", row.names = c(NA, -8L))
这是我正在尝试的,但我无法将MAPE和准确性缩放到相同的规模:
ggplot(data, aes(x = Clusters, y = Accuracy)) +
geom_point() +
geom_line(aes(y = MAPE))+
scale_y_continuous(
"MAPE (%)",
sec.axis = sec_axis(~ ., name = "MAPE (%)")
)
1条答案
按热度按时间ajsxfq5m1#
可以说,如果尺度相同,就不需要第二个轴。但撇开这些不谈,您的数据和代码还有一些问题。
首先,y变量不是数字,所以让我们解决这个问题:
第二,如果您想在y轴上绘制多个变量,最好将数据重新整形为长格式,其中一列用于名称,一列用于值。可以使用
tidyr::pivot_longer()
:测试结果: