R 对Y轴值进行排序
我正在尝试创建一个点图,其中国家从a-Z自上而下列在Y轴上。奖牌数量将是四个情节的X轴,金、银、铜和总数各一个。当然,ggplot更喜欢从Z-A中绘制国家,尽管阅读了所有关于这个问题的文章,但我还没有解决这个问题。我感谢在编码和理解方面的任何直接帮助R 对Y轴值进行排序,r,ggplot2,R,Ggplot2,我正在尝试创建一个点图,其中国家从a-Z自上而下列在Y轴上。奖牌数量将是四个情节的X轴,金、银、铜和总数各一个。当然,ggplot更喜欢从Z-A中绘制国家,尽管阅读了所有关于这个问题的文章,但我还没有解决这个问题。我感谢在编码和理解方面的任何直接帮助 mdat <- melt(raw, value.name = "Count", variable.name = "Place", id.var = "Country") mdat[, "Place"] <- factor(mdat[,
mdat <- melt(raw, value.name = "Count", variable.name = "Place", id.var = "Country")
mdat[, "Place"] <- factor(mdat[, "Place"], levels=c("Gold", "Silver", "Bronze", "Total"))
##I know my problem is likely on or around the above line ##
plot1 <- ggplot(mdat, aes(x = Count, y = Country, colour = Place)) +
geom_point() +
facet_grid(.~Place) + theme_bw()+
scale_colour_manual(values=c("#FFCC33", "#999999", "#CC6600", "#000000"))
print(plot1)
Algeria Gold 4
Argentina Gold 5
Armenia Gold 1
Algeria Silver 2
Argentina Silver 5
Armenia Silver 2
Algeria Bronze 4
Argentina Bronze 2
Armenia Bronze 0
mdat在绘图之前,必须对Country
的级别进行排序。此外,您提供的数据没有Total
level。以下方法应能提供所需的结果:
读取数据(包括位置
变量的总计
级别):
以正确的顺序放置变量:
levels(mdat$Place) <- c("Bronze"=3,"Gold"=1,"Silver"=2,"Total"=4)
mdat$Place <- as.numeric(mdat$Place)
mdat$Place <- as.factor(mdat$Place)
levels(mdat$Place) <- c("Gold","Silver","Bronze","Total")
它给出了以下曲线图:
由于您已经融化了数据,我怀疑raw
数据帧中没有Total
变量。您可以使用以下公式计算:
raw$Total <- rowSums(..specify the Gold, Silver & Bronze columns here..)
raw$Total欢迎来到SO。请提供一个您能为您的raw
数据帧添加dput
吗?谢谢,Jaap。我确实有一个“总”水平和随后的变量,但捕捉得非常好。对不起,这是晚上的结束。你的代码工作得很好。顺便问一下,ggplot允许我复制右边排序精美的Y轴标签吗?ggplot2
dual Y轴的开发者说得委婉一点(而且理由充分)。因此,没有简单的方法可以做到这一点。答案在,或者似乎是获得期望结果的唯一途径。有趣。让我们看看我是否学到了什么。如果我想按“total”的值对Y轴进行排序,这似乎可行,但我说的对吗?mdat$国家/地区
levels(mdat$Place) <- c("Bronze"=3,"Gold"=1,"Silver"=2,"Total"=4)
mdat$Place <- as.numeric(mdat$Place)
mdat$Place <- as.factor(mdat$Place)
levels(mdat$Place) <- c("Gold","Silver","Bronze","Total")
ggplot(mdat, aes(x = Count, y = Country, colour = Place)) +
geom_point(size=4) +
facet_grid(.~Place) + theme_bw()+
scale_colour_manual(values=c("#FFCC33","#999999","#CC6600","#000000"))
raw$Total <- rowSums(..specify the Gold, Silver & Bronze columns here..)