繁体   English   中英

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

[英]Reordering data based on a column in [r] to order x-value items from lowest to highest y-values in ggplot

我有一个数据框,我想对其进行重新排序以制作ggplot,这样我就可以轻松查看其中哪些项目具有最高和最低价值。 就我而言,我将数据分为两组,最好以可视化方式表示哪个组的得分更高。 基于这个问题,我想到了:

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

产生这个:

在此处输入图片说明

我已经尝试了很多变体来对数据重新排序,并且我觉得应该很容易实现。 为了明确起见,如果我成功地重组了数据,则随着绘图沿着x值移动,y值将上升。 因此,也许我专注于代码的错误部分以实现ggplot图中的目标?

你可以做这样的事情吗?

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

在此处输入图片说明

这显然仍然需要一些抛光来处理x轴标签混乱等问题。

除了在创建绘图之前尝试对数据进行排序之外,我还可以在编写绘图时对数据进行重新排序:

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

创造

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM