Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对Y轴值进行排序_R_Ggplot2 - Fatal编程技术网

R 对Y轴值进行排序

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[,

我正在尝试创建一个点图,其中国家从a-Z自上而下列在Y轴上。奖牌数量将是四个情节的X轴,金、银、铜和总数各一个。当然,ggplot更喜欢从Z-A中绘制国家,尽管阅读了所有关于这个问题的文章,但我还没有解决这个问题。我感谢在编码和理解方面的任何直接帮助

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..)