I want to add horizontal and vertical lines to my plot which has a log-transformed x-axis. If I cut the code, before the 'axes' transformation, everything plots as expected (code below). #image:
SOLVED - HERE . I had searched the stack but a google search just turned up this relevant thread.
Additionally, I am having difficulties with Aesthetic aspects, such as theme(legend.background.color, and grid lines.... - they are not appearing)
solved this secondary issue: for background color use [fill="lightblue"] for the gridlines, the size was too small (.01) - changed to (.5)
If I run the full code I receive the following warning message(no lines are plotted)
Warning messages:
1: In self$trans$x$transform(x) : NaNs produced
2: In trans$transform(value) : NaNs produced
Image:
geom_hline #is not being plotted.
geom_vline is now being plotted - which is strange because earlier it wasn't either.
ggplot(all_mydata, aes(x=dose,y=probability))+
geom_point(col="orange")+
geom_ribbon(data=p_df_all, aes(ymin=Lower,ymax=Upper, col="blue"))+
geom_step(data=p_df_all, aes(x=dose,y=probability, col="green",(linetype="dotdash")))+
geom_hline(yintercept = 1)+
geom_vline(xintercept = 10^10)+
#Axes
coord_trans(x = 'log10', limx = c(0.01,10000), limy=c(0.0001,1.1))+
annotation_logticks(scaled = FALSE) +
scale_x_continuous(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x)))+
xlab("log10 transformed") + ylab("0-1")+
#Plot aesthetics:
theme(panel.background = element_rect(color = "red"), #isn't working
panel.grid.major=element_line(color="green",size=.01))+ #isn't working
theme(legend.position = c(.2, .7))+ #this works
theme(legend.background=element_rect(color="black")) #this doesn't
Data (2 variables)
all_mydata <- structure(list(dose = c(3, 3, 25, 25, 25, 50, 50, 50), total = c(25L,25L, 25L, 25L, 25L, 25L, 25L, 25L), affected = c(1L, 3L, 22L, 14L, 22L, 23L, 16L, 21L), probability = c(0.04, 0.12, 0.88, 0.56, 0.88, 0.92, 0.64, 0.84), model = c("mod1", "mod1", "mod1", "mod1", "mod1", "mod1", "mod1", "mod1")), .Names = c("dose", "total", "affected", "probability", "model"), row.names = c(1L, 2L, 51L, 52L, 53L, 73L, 74L, 75L), class = "data.frame")
p_df_all <-structure(list(dose = c(1.0001, 1.04747510870603, 10.1171372457295, 10.5963897972846, 11.0983447203301, 9547.72091181669, 10000),
probability = c(0.0683999851683096, 0.0710791589380873, 0.366688095557777,
0.376331202778934, 0.386073310136858, 0.996189526007837,
0.996343135145175), Lower = c(0.0490006092001366, 0.0512942391381131,
0.342265517182034, 0.35200684160253, 0.361817143260538, 0.993441634537481,
0.993687296620045), Upper = c(0.0877993611364827, 0.0908640787380616,
0.39111067393352, 0.400655563955339, 0.410329477013178, 0.998937417478193,
0.998998973670305), model = c("mod1", "mod1", "mod1", "mod1",
"mod1", "mod1", "mod1")), .Names = c("dose", "probability", "Lower", "Upper", "model"), row.names = c(1L, 2L, 51L, 52L, 53L, 199L, 200L), class = "data.frame")
Here is a version of the plot with all the theme elements working, the log scale implemented without a coordinate transformation, and the minor log tick-marks still present. I've mostly left your color choices intact, but changed a few things to make them show up better. The color combinations clash badly, so let me know if this is really what you had in mind. In the code below, the comments refer to the line(s) of code just below the comment.
ggplot(all_mydata, aes(x=dose,y=probability)) +
geom_point(col="orange", size=4) +
# To generate an informative legend without mapping to a data column,
# use informative names for the colour aesthetics
geom_ribbon(data=p_df_all, aes(ymin=Lower, ymax=Upper, colour="Ribbon"),
fill="yellow", size=1) +
# Move linetype outside of aes so that it will be interpreted literally,
# rather than as an aesthetic mapping
geom_step(data=p_df_all, aes(x=dose, y=probability, colour="Dashed Line"),
linetype="dotdash", size=1) +
geom_hline(yintercept = 1) +
geom_vline(xintercept = 10^10) +
# Remove coordinate transformation
#coord_trans(x = 'log10', limx = c(0.01,10000), limy=c(0.0001,1.1)) +
# Change to scaled = TRUE
annotation_logticks(scaled = TRUE, sides="b") +
scale_x_log10(breaks = 10^(-1:10),
labels = trans_format("log10", math_format(10^.x))) +
# This is where you set the colors for the colour aesthetic
scale_colour_manual(values=c("Ribbon"="blue", "Dashed Line"="green")) +
xlab("log10 transformed") + ylab("0-1") +
# Use fill to set background color
theme(panel.background = element_rect(fill = "red"),
# Set a larger size, so that grid lines will be visible
panel.grid.major=element_line(color="green", size=.3),
legend.position = c(.8, .7),
# Set legend title and text "white" so they're visible with "black" background
legend.title = element_text(colour="white"),
legend.text = element_text(colour="white"),
# Use fill to set background color
legend.background=element_rect(fill="black"))