我有一張這樣的表:
p_well <- structure(c(0, 0, 0.45, 0, 0, 0, 68.1, 0, 0, 0, 0, 0.45, 0.23,
0, 12.22, 0.23, 0, 0, 0, 0.23, 0.23, 1.36, 1.13, 0.23, 0, 0.23,
0, 0.45, 0, 0, 0, 0.23, 0.23, 0, 0, 0.45, 0, 0.45, 0, 0.9, 0.68,
0.9, 0, 1.13, 0, 0, 0, 0, 0, 0.9, 0, 0.23, 0.23, 0.23, 0, 0,
0.45, 0.23, 0, 0.45, 0.23, 0, 0, 0, 0, 5.88, 0, 0.45, 0, 0, 0,
0.23), class = "table", .Dim = 8:9, .Dimnames = structure(list(
c("adjective", "as_well", "dispreferred_marker", "manner_adverb",
"quote_marker", "restart_marker", "turn_preface", "unclear"
), c("W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9"
)), .Names = c("", "")))
并想在ggplot2. 我知道怎么做base R,就像這樣:
par(mar = c(4.4,4,3,1))
barplot(p_well, main = "Functions of 'well' by positions in turn", cex.main = 0.9,
cex.axis = 0.8, cex.lab = 0.8, cex.names = 0.8,
names.arg = colnames(p_well),
xlab = "Positions", ylab = "%",
col = c("red", "orange", "yellow", "green", "darkgreen", "lightblue", "blue"))
legend("topright", rownames(p_well),
fill = c("red", "orange", "yellow", "green", "darkgreen", "lightblue", "blue"),
bty = "n", cex = 0.8)

但是,我想將情節遷移到ggplot2. 此外,我需要使用 black/white structure 而不是顏色來區分不同級別的條。那怎么辦呢?
uj5u.com熱心網友回復:
我想這可能就是你要找的
p_well <- structure(c(0, 0, 0.45, 0, 0, 0, 68.1, 0, 0, 0, 0, 0.45, 0.23,
0, 12.22, 0.23, 0, 0, 0, 0.23, 0.23, 1.36, 1.13, 0.23, 0, 0.23,
0, 0.45, 0, 0, 0, 0.23, 0.23, 0, 0, 0.45, 0, 0.45, 0, 0.9, 0.68,
0.9, 0, 1.13, 0, 0, 0, 0, 0, 0.9, 0, 0.23, 0.23, 0.23, 0, 0,
0.45, 0.23, 0, 0.45, 0.23, 0, 0, 0, 0, 5.88, 0, 0.45, 0, 0, 0,
0.23), class = "table", .Dim = 8:9, .Dimnames = structure(list(
c("adjective", "as_well", "dispreferred_marker", "manner_adverb",
"quote_marker", "restart_marker", "turn_preface", "unclear"
), c("W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9"
)), .Names = c("", "")))
p_well <- as.data.frame(p_well)
ggplot(p_well, aes(fill=Var1, x=Var2, y=Freq ))
geom_bar(position="stack", stat="identity")
xlab("Positions")
ylab("%")
theme_bw()
scale_fill_grey(start = 0, end = .9)
theme(legend.title=element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
legend.position = c(.8,.7))

如果你想從底部去除間隙
ggplot(p_well, aes(fill=Var1, x=Var2, y=Freq ))
geom_bar(position="stack", stat="identity")
xlab("Positions")
ylab("%")
theme_bw()
scale_fill_grey(start = 0, end = .9)
scale_y_continuous(expand = c(0,0))
theme(legend.title=element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
legend.position = c(.8,.7))

您也可以使用顛倒順序,forcats::fct_rev()但您還需要將黑白顏色從 更改scale_fill_grey(start = 0, end = .9)為scale_fill_grey(start = .9, end = 0)
ggplot(p_well, aes(x=Var2, y=Freq,fill = forcats::fct_rev(Var1)))
geom_bar(position="stack", stat="identity")
xlab("Positions")
ylab("%")
theme_bw()
scale_fill_grey(start = .9, end = 0)
scale_y_continuous(expand = c(0,0))
theme(legend.title=element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
legend.position = c(.8,.7))

為您可以使用的繪圖添加模式ggpattern()。但是,使用黑白比例尺和一些條形的大小,很難區分組之間的差異
library(ggpattern)
ggplot(p_well, aes(x=Var2, y=Freq))
geom_bar_pattern(position="stack",stat="identity",
mapping=aes(pattern=Var1))
xlab("Positions")
ylab("%")
theme_bw()
scale_fill_grey(start = .9, end = 0)
scale_y_continuous(expand = c(0,0))
theme(legend.title=element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
legend.position = c(.8,.7))

讓填充的顏色在不同的灰色陰影中變化
ggplot(p_well, aes(x=Var2, y=Freq, fill=Var1))
geom_bar_pattern(position="stack",stat="identity",
mapping=aes(pattern=Var1))
xlab("Positions")
ylab("%")
theme_bw()
scale_fill_grey(start = .9, end = 0)
scale_y_continuous(expand = c(0,0))
theme(legend.title=element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
legend.position = c(.8,.7))

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364233.html
