2017-06-15 85 views
0

我有一个数据框,其中有两个不同的数据组的Recall值。我使用下面的代码制作了密度图,但我对它的外观感到困惑。对于一个组(在这种情况下为GE),召回非常高(始终为1),在图中我预计在x轴= 1时尖峰和相对较高的峰值(wrt Epi组),而在输出中不是这种情况图表(见附图)。如何在ggplot2中获得正确的“densityplot”?

命令我使用:

ggplot(epiGE, aes(x=Rec)) + geom_density(aes(group=Class, colour=Class, fill=Class), alpha=0.3) + theme(axis.title.x=element_blank(), axis.title.y=element_blank()) 

DensityPlot

我也曾尝试GGPLOT2直方图,但有作为在x轴= 1我不明白GE组的右侧分布,作为barplot显示与GE组相比,Epi组中Recall=1的值更多。

ggplot(epiGE, aes(x=Rec)) + geom_histogram(aes(group=Class, colour=Class, fill=Class), alpha=0.3) + theme(axis.title.x=element_blank(), axis.title.y=element_blank()) 

BarPlot

有人可以请指导我什么,我做错了什么?谢谢。

这里是我的数据dput:

> dput(epiGE) 
structure(list(Class = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("Epi", "GE"), class = "factor"), 
    Rec = c(1, 1, 0.928571428571429, 1, 1, 1, 0.625, 1, 0.935897435897436, 
    1, 0.911764705882353, 1, 0.790697674418605, 1, 0.891891891891892, 
    1, 1, 1, 0.98019801980198, 1, 0.949367088607595, 1, 0.877551020408163, 
    1, 0.944444444444444, 1, 1, 1, 0.955445544554455, 1, 0.5, 
    1, 0.170731707317073, 1, 0.513513513513513, 1, 0, 1, 0.9, 
    1, 0.875, 1, 0.884615384615385, 1, 0.5, 1, 0.9, 1)), .Names = c("Class", 
"Rec"), class = "data.frame", row.names = c(NA, -48L)) 

回答

1

这与平滑的带宽。您可以使用参数adjust来调整带宽。这是一个例子。

ggplot(epiGE, aes(x=Rec)) + 
    geom_density(aes(group=Class, colour=Class, fill=Class), alpha=0.3, adjust = 1/10) + 
    theme(axis.title.x=element_blank(), axis.title.y=element_blank()) 

设置adjust1/10意味着使用默认带宽1/10

+0

谢谢您抽空试试。我已经尝试过这个参数,但是如果你看到了这个图,那么红色峰值(代表Epi组)就会高于绿色峰值(代表GE组),因为Epi类具有更多的Recall = 1数据点类,这里不是这种情况(如果你看到两个类的召回值)。 – Newbie

+0

只有7或8个属于Epi类的值,其回调范围在0.8到1之间,而GE类中的所有值都具有Recall = 1,因此在这种情况下表示GE值的峰值高度应该高于代表Epi值的峰值高度(在区域0.9 - 1)。但是我们在情节中看到的是与之相反的。 – Newbie

+0

'adjust = 1/50'如何?我觉得密度阴谋可能不是最适合实现你想要的阴谋。 – www