I have several troubles plotting my data frame with ggplot2.
I haven't problems with the plotting itself. I have exactly the same distribution that I want. However, the plot shows only one part of the magnitude orders. The dataframe shows data at -07, -08, and -09. I tried the chart below to use gaps, breaks, and some transformations but with bad results. Below you can find an example of what I want to plot. I only work with R, so I will appreciate if you can share only R codes.
Here is the example code:
##plot data
ggplot(data, aes(x = reorder(Treatment, -mean), y = mean))
geom_bar(aes(x = reorder(Treatment, -mean), y= mean), stat="identity", fill="black" , alpha=0.5)
geom_errorbar(aes(x = reorder(Treatment, -mean), ymin=mean-se, ymax=mean se), width=0.4, colour="black", alpha=0.9, size=1.3)
theme(
line = element_line(colour = "black", size = 1, linetype = 1, lineend = "butt"),
rect = element_rect(fill = "white", colour = "black", size = 1, linetype = 1),
aspect.ratio = 1,
plot.background = element_rect(fill = "white"),
plot.margin = margin(1, 1, 1, 1, "cm"),
axis.text = element_text(size = rel(2.5), colour = "#000000", margin = 1),
strip.text = element_text(size = rel(0.8)),
axis.line = element_blank(),
axis.text.x = element_text(vjust = 0.2),
axis.text.y = element_text(hjust = 1),
axis.ticks = element_line(colour = "#000000", size = 1.2),
axis.title.x = element_text(size = 30, vjust=0.5),
axis.title.y = element_text(size = 30, angle = 90),
axis.ticks.length = unit(0.15, "cm"),
legend.background = element_rect(colour = NA),
legend.spacing = unit(0.15, "cm"),
legend.key = element_rect(fill = "grey95", colour = "white"),
legend.key.size = unit(1.2, "lines"),
legend.key.height = NULL,
legend.key.width = NULL,
legend.text = element_text(size = rel(2.0)),
legend.text.align = NULL,
legend.title = element_text(size = rel(2.0), face = "bold", hjust = 0),
legend.title.align = NULL,
legend.position = c(.80, .88),
legend.direction = NULL,
legend.justification = "center",
legend.box = NULL,
panel.background = element_rect(fill = "#ffffff", colour = "#000000",
size = 2, linetype = "solid"),
panel.border = element_rect(colour = "black", fill=NA, size=2),
)
ylab(expression(Lp[r]~(m~s^-1~Mpa^-1))) xlab(expression(Treatment))
CodePudding user response:
library(ggbreak)
df <- data.frame(treatment = factor(1:4),
y = c(100000, 1000, 100, 10),
se = c(10000, 100, 10, 1))
ggplot(df, aes(x=treatment, y=y))
geom_col()
geom_errorbar(aes(ymin=y-se, ymax=y se), width=.4)
scale_y_cut(breaks=c(25, 150, 1600))
CodePudding user response:
thanks a lot for your code. It works. However, I have a problem with the second column of the plot. The error bar showed incomplete. There is a way to fix this? I need that the plot be exactly as below. Here is the example code and the result. Thanks.
ggplot(data, aes(x = reorder (Treatment, -mean), y=mean, fill = Grapevine)) geom_col(aes(x=reorder(Treatment, -mean), y=mean), stat = 'identity', position = 'dodge') geom_errorbar(aes(x=reorder(Treatment, -mean), ymin = mean - se, ymax = mean se), width = 0.1, position = position_dodge(0.9)) scale_y_cut(breaks=c(2.0E-09,2.0E-08, 1.0E-07)) scale_y_continuous(breaks = c(0, 6.0e-09, 6.0e-08, 6.0e-07)) theme(
line = element_line(colour = "black", size = 1, linetype = 1, lineend = "butt"),
rect = element_rect(fill = "white", colour = "black", size = 1, linetype = 1),
aspect.ratio = 0.6,
plot.background = element_rect(fill = "white"),
plot.margin = margin(1, 1, 1, 1, "cm"),
axis.text = element_text(size = rel(2.5), colour = "#000000", margin = 1),
strip.text = element_text(size = rel(0.8)),
axis.line = element_blank(),
axis.text.x = element_text(vjust = 0.2, angle=90),
axis.text.y = element_text(hjust = 1),
axis.ticks = element_line(colour = "#000000", size = 1.2),
axis.title.x = element_text(size = 30, vjust=0.5),
axis.title.y = element_text(size = 30, angle = 90),
axis.ticks.length = unit(0.1, "cm"),
legend.background = element_rect(colour = NA),
legend.margin = unit(0.15, "cm"),
legend.key = element_rect(fill = "grey95", colour = "white"),
legend.key.size = unit(1.2, "lines"),
legend.key.height = NULL,
legend.key.width = NULL,
legend.text = element_text(size = rel(2.0)),
legend.text.align = NULL,
legend.title = element_text(size = rel(2.0), face = "bold", hjust = 0),
legend.title.align = NULL,
legend.position = "right",
legend.direction = NULL,
legend.justification = "right",
legend.box = NULL,
panel.background = element_rect(fill = "#ffffff", colour = "#000000",
size = 2, linetype = "solid"),
panel.border = element_rect(colour = "black", fill=NA, size=2),) ylab(expression(Lp[r]~(m~s^-1~Mpa^-1))) xlab(expression(Treatment))