gpt4 book ai didi

r - ggplot2 - 为数据框的每一列创建一个条形图

转载 作者:行者123 更新时间:2023-12-05 08:41:02 25 4
gpt4 key购买 nike

我知道这个问题非常基础,但我完全是个初学者,我一整天都在尝试为数据框的每一列绘制单独的图表。任何帮助都会非常有用

数据如下:

> dfslices
X0035.A061 X0094.B116 X0314.A038
verylow 19.48052 8.127208 36.8243243
low 2.96846 9.069494 7.4324324
medium 0.00000 2.237927 0.3378378
high 0.00000 0.000000 1.6891892

基本上,我需要为每列绘制 1 个条形图(X0035.A061、X0094.B116 和 X0314.A038)。每个条形图有 4 个条形图(一个条形对应于极低类别,另一个对应于低类别,另一个对应于中等类别,另一个对应于高类别)。如果图表的标题是(X0035.A061、X0094.B116 和 X0314.A038)并且图表的每个条形都有相应的标签(非常低、低、中等和高),那就太好了

谢谢

最佳答案

这是使用 data.table 包为 melt()fread() 函数解决问题的一种方法,并使用ggplot2 中的 facet_grid() 将所有 3 个原始列绘制为单个图上的单独面板。

library(data.table)
library(ggplot2)

# Convert text data to data.table using fread() from the data.table package.
dfslice = fread("category X0035.A061 X0094.B116 X0314.A038
verylow 19.48052 8.127208 36.8243243
low 2.96846 9.069494 7.4324324
medium 0.00000 2.237927 0.3378378
high 0.00000 0.000000 1.6891892")

# Convert data to 'long form' using melt() from the data.table package.
mtab = melt(dfslice, id.vars="category")

# Manually set factor levels of 'category' column to plot in a logical order.
mtab$category = factor(mtab$category,
levels=c("verylow", "low", "medium", "high"))

mtab
# category variable value
# 1: verylow X0035.A061 19.4805200
# 2: low X0035.A061 2.9684600
# 3: medium X0035.A061 0.0000000
# 4: high X0035.A061 0.0000000
# 5: verylow X0094.B116 8.1272080
# 6: low X0094.B116 9.0694940
# 7: medium X0094.B116 2.2379270
# 8: high X0094.B116 0.0000000
# 9: verylow X0314.A038 36.8243243
# 10: low X0314.A038 7.4324324
# 11: medium X0314.A038 0.3378378
# 12: high X0314.A038 1.6891892

p = ggplot(data=mtab, aes(x=category, y=value, fill=category)) +
geom_bar(stat="identity") +
scale_fill_viridis_d() +
facet_grid(. ~ variable)

ggsave("faceted_barplot.png", plot=p, width=7.5, height=2.5, dpi=150)

enter image description here

关于r - ggplot2 - 为数据框的每一列创建一个条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52822840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com