mis*_*y28 1 plot r ggplot2 dataframe
我知道这个问题确实很基本,但是我是一个初学者,我整天都在尝试为数据帧的每一列绘制单独的图。任何帮助将非常有用
数据如下:
> 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
Run Code Online (Sandbox Code Playgroud)
基本上,每列(X0035.A061,X0094.B116和X0314.A038)都需要1个barplot。每个条形图都有4条(一条对应于非常低的类别,另一条对应于低,另一条对应于中,另一条对应于高)。图表的标题是(X0035.A061,X0094.B116和X0314.A038),并且图表的每个小节都有相应的标签(极低,低,中和高),这将非常棒。
谢谢
下面是使用一个解决问题的办法data.table包的melt()和fread()功能,并使用facet_grid()从ggplot2绘制你的原始列作为单独的面板的所有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)
Run Code Online (Sandbox Code Playgroud)