首页 文章

根据[r]中的列对数据进行重新排序,以便在ggplot中从最低y值到最高y值对x值项进行排序

提问于
浏览
0

我有一个数据帧,我想重新排序以制作一个ggplot,这样我就可以很容易地看到哪些项目具有最高和最低值 . 在我的情况下,我很高兴有一个视觉表示哪个组往往得分更高 . 基于this question我想出了:

library(ggplot2)
cor.data<- read.csv("https://dl.dropbox.com/s/p4uy6uf1vhe8yzs/cor.data.csv?dl=0",stringsAsFactors = F)
cor.data.sorted = cor.data[with(cor.data,order(r.val,pic)),] #<-- line that doesn't seem to be working
ggplot(cor.data.sorted,aes(x=pic,y=r.val,size=df.val,color=exp)) + geom_point()

产生这个:

enter image description here

我已经尝试了很多变种来重新排序数据,我觉得这应该很简单 . 为了澄清,如果我成功地重新组织了数据,那么当绘图沿着x值移动时,y值会上升 . 所以也许我正专注于代码的错误部分来实现这个ggplot数字?

2 回答

  • 1

    你可以这样做吗?

    library(tidyverse);
    cor.data %>%
        mutate(pic = factor(pic, levels = as.character(pic)[order(r.val)])) %>%
        ggplot(aes(x = pic, y = r.val, size = df.val, color = exp)) + geom_point()
    

    enter image description here

    这显然还需要一些抛光来处理 x 轴标签杂乱等 .

  • 0

    我可以在编写绘图时重新排序数据,而不是在创建绘图之前尝试对数据进行排序:

    cor.data<- read.csv("https://dl.dropbox.com/s/p4uy6uf1vhe8yzs/cor.data.csv?dl=0",stringsAsFactors = F)
    cor.data.sorted = cor.data[with(cor.data,order(r.val,pic)),] #<-- This line controls order points drawn created to make (slightly) more readible plot
    gplot(cor.data.sorted,aes(x=reorder(pic,r.val),y=r.val,size=df.val,color=exp)) + geom_point()
    

    创造

    enter image description here

相关问题