我有一个只有一个记录和N个数字列的data.frame。我希望在R中将图作为ggplot中在同一图上具有非零值的所有列的标杆。
例如:
df <- data.frame(a=1, b=0, c=10, d=20)我转换了data.frame,但没有给这两列命名。
注意: Python通过sns实现了相同的图
sns.barplot(x = 'Name', y = 'count', data*) 发布于 2019-12-09 14:41:01
在R基中,这就像
barplot(unlist(df[1, df[1, ] != 0]))

如果你喜欢ggplot2图形,
library(tidyverse)
df %>%
gather(key, value) %>%
filter(value != 0) %>%
ggplot(aes(x = key, y = value)) +
geom_col()

发布于 2019-12-09 14:33:35
为了绘制条形图,您可以使用tidyr将数据转换为更长的格式,与ggplot和filter兼容,以删除零值:
library(tidyverse)
library(ggplot2)
df=data.frame(a=1, b=0, c=10, d=20)
df %>% pivot_longer(everything(), names_to = "Variable", values_to = "Values") %>% filter(., Values != 0)
# A tibble: 3 x 2
Variable Values
<chr> <dbl>
1 a 1
2 c 10
3 d 20如果你把它和ggplot结合起来,它会给你:
df %>% pivot_longer(everything(), names_to = "Variable", values_to = "Values") %>% filter(., Values != 0) %>%
ggplot(., aes(x = Variable, y = Values, fill= Variable))+
geom_bar(stat = "identity")

https://stackoverflow.com/questions/59250514
复制相似问题