ggplot: Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group
ggplot: Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group
我有一个小数据集,我想用折线图绘制它:
> Gain
quantile Positives Total_Examples Positive_Prevalence Lift Cumsum_Positives
1: (0, ] 1 1 1 1.428571 0.1428571
2: (1.9,2.8] 1 1 1 1.428571 0.2857143
3: (2.8,3.7] 1 1 1 1.428571 0.4285714
4: (3.7,4.6] 1 1 1 1.428571 0.5714286
5: (4.6,5.5] 1 1 1 1.428571 0.7142857
6: (5.5,6.4] 1 1 1 1.428571 0.8571429
7: (6.4,7.3] 1 1 1 1.428571 1.0000000
8: (7.3,8.2] 0 1 0 0.000000 1.0000000
9: (8.2,9.1] 0 1 0 0.000000 1.0000000
10: (9.1,10] 0 1 0 0.000000 1.0000000
我的代码如下:
ggplot(Gain ) +
geom_area(aes(x = quantile, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) +
scale_x_discrete(name ="% of the Data Set",
labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))
但是,我收到一条错误消息:
Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group
我读过与此类错误相关的帖子,通常错误意味着在美学中调用的变量不存在于原始数据框中。但这里不是这样。
我也试过这段代码,但它 returns 同样的错误信息:
Gain$index <- row.names(Gain)
ggplot(Gain ) +
geom_area(aes(x = index, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) +
scale_x_discrete(name ="% of the Data Set",
labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))
我们将不胜感激您的建议。
您的数据长度为 10,而您在 geom_line
中的 y 美学长度为 11。
seq(0, 1 , by = 0.1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
尝试seq(0,0.9,by=0.1)
或seq(0.1,1,by=0.1)
如果您的目标是画一条从 (x = 0, y = 0) 到 (x = 0.9, y = 1) 的直线,您也可以将 geom_line
替换为 geom_abline
:
geom_abline(slope = 1/9,
intercept = -0.109,
color = "blue",
size = 2,
alpha = 0.5) +
我有一个小数据集,我想用折线图绘制它:
> Gain
quantile Positives Total_Examples Positive_Prevalence Lift Cumsum_Positives
1: (0, ] 1 1 1 1.428571 0.1428571
2: (1.9,2.8] 1 1 1 1.428571 0.2857143
3: (2.8,3.7] 1 1 1 1.428571 0.4285714
4: (3.7,4.6] 1 1 1 1.428571 0.5714286
5: (4.6,5.5] 1 1 1 1.428571 0.7142857
6: (5.5,6.4] 1 1 1 1.428571 0.8571429
7: (6.4,7.3] 1 1 1 1.428571 1.0000000
8: (7.3,8.2] 0 1 0 0.000000 1.0000000
9: (8.2,9.1] 0 1 0 0.000000 1.0000000
10: (9.1,10] 0 1 0 0.000000 1.0000000
我的代码如下:
ggplot(Gain ) +
geom_area(aes(x = quantile, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) +
scale_x_discrete(name ="% of the Data Set",
labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))
但是,我收到一条错误消息:
Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group
我读过与此类错误相关的帖子,通常错误意味着在美学中调用的变量不存在于原始数据框中。但这里不是这样。
我也试过这段代码,但它 returns 同样的错误信息:
Gain$index <- row.names(Gain)
ggplot(Gain ) +
geom_area(aes(x = index, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) +
scale_x_discrete(name ="% of the Data Set",
labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))
我们将不胜感激您的建议。
您的数据长度为 10,而您在 geom_line
中的 y 美学长度为 11。
seq(0, 1 , by = 0.1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
尝试seq(0,0.9,by=0.1)
或seq(0.1,1,by=0.1)
如果您的目标是画一条从 (x = 0, y = 0) 到 (x = 0.9, y = 1) 的直线,您也可以将 geom_line
替换为 geom_abline
:
geom_abline(slope = 1/9,
intercept = -0.109,
color = "blue",
size = 2,
alpha = 0.5) +