发出「;不适用;在R和ggplot2的条形图中排列条形图时

发出「;不适用;在R和ggplot2的条形图中排列条形图时,r,ggplot2,plotly,geom-bar,ggplotly,R,Ggplot2,Plotly,Geom Bar,Ggplotly,我正在尝试使用ggplot2和R中的plotly创建一个下降条条形图。我使用的数据是“a12”,ggplot在“最终数据帧在下方使用”行下使用该数据 如果您看到下面的快照,“a1”列中的“na”值应位于绘图中的第二个点,但它不遵循降序,而是在最后一个点按下 解决这个问题的一种方法是对那里的值进行硬编码,但我不想这样做。相反,有没有一种方法可以让“na”遵循顺序,而无需硬编码任何值 注意:请不要修改“#最终数据帧在下面消耗”行上方的数据。我正在处理的实际数据实际上是相同的格式。请帮忙 a1 = c

我正在尝试使用ggplot2和R中的plotly创建一个下降条条形图。我使用的数据是“a12”,ggplot在“最终数据帧在下方使用”行下使用该数据

如果您看到下面的快照,“a1”列中的“na”值应位于绘图中的第二个点,但它不遵循降序,而是在最后一个点按下

解决这个问题的一种方法是对那里的值进行硬编码,但我不想这样做。相反,有没有一种方法可以让“na”遵循顺序,而无需硬编码任何值

注意:请不要修改“#最终数据帧在下面消耗”行上方的数据。我正在处理的实际数据实际上是相同的格式。请帮忙

a1 = c("A","","B","C","D","F")
b1 = c(165,154,134,110,94,78)
a12 = data.frame(a1,b1)
a12[2, 1] = "NA"

#Final Data frame is consumed below
pp1 <<- ggplot(a12 , 
               aes(x = reorder(a1, -b1), 
                   y = b1,
                   text = paste("User: <br>", a1, "<br> Days: <br>", round(b1)))) + 
  geom_bar(stat = "identity", fill = "#3399ff" ) + 
  scale_y_continuous(name = "Time") + 
  scale_x_discrete(name = "Employee") 

ggplotly(pp1, tooltip="text", height = 392)
a1=c(“A”、“B”、“c”、“D”、“F”)
b1=c(165154134110,94,78)
a12=数据帧(a1,b1)
a12[2,1]=“NA”
#最终数据帧消耗如下

pp1为了按照您想要的方式排列条形图,在
df$a1
中不应缺少值,即
NA
。我们需要以某种方式替换丢失的值

由于您在上面的评论中要求“不替换,不修改数据”,我建议您使用替换
ggplot
调用中缺少的值,例如
tidyr::replace_na
。这将保持原始数据不变

library(tidyr)
library(ggplot2)
pp1 <- ggplot(data = replace_na(a12, replace = list(a1 = "NA")),
                      aes(x = reorder(a1, -b1),
                          y = b1,
                          text = paste("User: <br>", a1, "<br> Days: <br>", round(b1)))) +
  geom_bar(stat = "identity", fill = "#3399ff") +
  scale_y_continuous(name = "Time") +
  scale_x_discrete(name = "Employee")

ggplotly(pp1, tooltip = "text",height = 392)
library(tidyr)
图书馆(GG2)

pp1为了按照您想要的方式排列条形图,在
df$a1
中不应缺少值,即
NA
。我们需要以某种方式替换丢失的值

由于您在上面的评论中要求“不替换,不修改数据”,我建议您使用替换
ggplot
调用中缺少的值,例如
tidyr::replace_na
。这将保持原始数据不变

library(tidyr)
library(ggplot2)
pp1 <- ggplot(data = replace_na(a12, replace = list(a1 = "NA")),
                      aes(x = reorder(a1, -b1),
                          y = b1,
                          text = paste("User: <br>", a1, "<br> Days: <br>", round(b1)))) +
  geom_bar(stat = "identity", fill = "#3399ff") +
  scale_y_continuous(name = "Time") +
  scale_x_discrete(name = "Employee")

ggplotly(pp1, tooltip = "text",height = 392)
library(tidyr)
图书馆(GG2)

pp1在您的第三行设置
stringsAsFactors=FALSE
。@markus,它成功了,谢谢,我也想知道,假设我有一个1000行的数据,其中多个列具有相似的“NA”值,这个命令处理整个数据吗?请像上面所做的那样提出一个新问题,给出一个可重复的示例。我会解决这个问题,非常感谢您的帮助,我还有一个问题需要您的帮助,请检查您第三行中Set
stringsAsFactors=FALSE
的可能重复链接。@markus,成功了,谢谢,我也想知道,假设我有1000行数据,多个列具有类似的“NA”值,这个命令能处理所有的数据吗?请把这个问题变成一个新的问题,给出一个可复制的例子,就像你上面做的那样。我会解决这个问题的,非常感谢你的帮助,我还遇到了另一个问题,我需要你的帮助,请检查这个链接可能的重复