首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只为所有非零列绘制桶形图

只为所有非零列绘制桶形图
EN

Stack Overflow用户
提问于 2019-12-09 14:03:39
回答 2查看 293关注 0票数 2

我有一个只有一个记录和N个数字列的data.frame。我希望在R中将图作为ggplot中在同一图上具有非零值的所有列的标杆。

例如:

代码语言:javascript
复制
df <- data.frame(a=1, b=0, c=10, d=20)

我转换了data.frame,但没有给这两列命名。

注意: Python通过sns实现了相同的图

代码语言:javascript
复制
sns.barplot(x = 'Name', y = 'count', data*) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-09 14:41:01

在R基中,这就像

代码语言:javascript
复制
barplot(unlist(df[1, df[1, ] != 0]))

如果你喜欢ggplot2图形,

代码语言:javascript
复制
library(tidyverse)

df %>%
  gather(key, value) %>%
  filter(value != 0) %>%
  ggplot(aes(x = key, y = value)) +
  geom_col()

票数 6
EN

Stack Overflow用户

发布于 2019-12-09 14:33:35

为了绘制条形图,您可以使用tidyr将数据转换为更长的格式,与ggplot和filter兼容,以删除零值:

代码语言:javascript
复制
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结合起来,它会给你:

代码语言:javascript
复制
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")

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59250514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档