如何在绘图上排列按Y排序的X轴?

时间:2019-04-08 08:18:51

标签: r dplyr plotly

我需要在X上绘图(使用的应用程序(“ facebook”,“ tweeter” ...)),并在Y轴上花费时间。 我必须订购X轴通过Y轴。 我该怎么办?

我尝试了以下方法:

data_df <- Original_dataFrame%>%                                           

dplyr::select(Applications,Time_Spend) %>%
dplyr::group_by(Applications,Time_Spend)%>%
arrange(Applications,Time_Spend)


plot_ly(data_df, y=~Time_Spend,x = ~Applications, type = 'scatter', mode = 'lines')

2 个答案:

答案 0 :(得分:0)

这是一种具有基本R图形和语法的方法(此处没有magrittr管道或plot_ly):

假设您有应用程序x和time_spend y

首先,创建一些示例数据:

set.seed(123)
x <- letters[1:10]
y <- sample(101:200, 10)

#   x   y
#1  a 129
#2  b 179
#3  c 141
#4  d 186
#5  e 191
#6  f 105
#7  g 150
#8  h 183
#9  i 151
#10 j 142

接下来,按时间顺序绘制time_spend(y)。通过将x参数设为x=seq_along(y),我将使用等水平间隔的点进行此操作。我还将省略xaxt="n"的x轴标签:

plot(x=seq_along(y), y=sort(y), xaxt="n", xlab="x", ylab="y")

现在,我将沿x轴添加标签,以便标签与绘制的数据匹配:

axis(side=1, at=seq_along(y), labels=x[order(y)])

plot

答案 1 :(得分:0)

如果要通过plotly渲染图。

  1. 将数据放入小标题或data.frame
  2. 使用ggplot进行绘图(x由reorder()排序)
  3. 使用ggplotly进行图形渲染,以转换ggplot对象

代码

library(tidyverse)
library(plotly)
set.seed(123)
x <- letters[1:10]
y <- sample(101:200, 10)

df <-tibble(x = x, y = y)


g<- ggplot(df, aes(x=reorder(x, y , mean), y =y )) + geom_point()
ggplotly(g)