我正在尝试使用ggplot2创建一个降序条形图,并在R中绘制图形。我使用的数据是" a12"这是ggplot在#34行下消耗的#Final数据框消耗在"。
如果你看到下面的快照,那么" na"列中的值" a1"应该来到情节中的第二个位置,但是它不按照降序排列并且在最后一个位置被推动。
解决此问题的一种方法是在那里硬编码值,但我不想这样做。相反,有一种方法可以用来制作" na"按照顺序没有硬编码任何值?
注意:请不要修改第34行以上的数据; #Final数据框在"下面消耗。我正在处理的实际数据实际上是相同的格式。请帮忙。
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",NA,"B","C","D","F")
b1 = c(165,154,134,110,94,78)
a12 = data.frame(a1,b1,stringsAsFactors = FALSE)
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)
答案 0 :(得分:1)
为了按照您想要的方式排列条形图,NA
中不应存在缺失值,即df$a1
。我们不知何故需要替换那个缺失值。
由于您在上述评论中要求&#34;没有替换,没有修改数据&#34; ,我建议您将调用中的缺失值替换为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)
我希望这会有所帮助。