Possible Duplicate:
R & ggplot2: How to get arrows under the axis label?
How do we make ggplot2
or base r
produce arrows showing the direction of the axis?
e.g.
Possible Duplicate:
R & ggplot2: How to get arrows under the axis label?
How do we make ggplot2
or base r
produce arrows showing the direction of the axis?
e.g.
Here is a full blown example I used for my microeconomics class to generate supply and demand curves. Notice the lines, where I am generating X and Y axes. I usually work with R Studio. It makes a lot easier to run scripts, analyze data structures and see graphs. Hope this helps.
library("ggplot2")
library("grid")
funcs <- list(function(x) return (200-0.02*x),function(x) return (200-0.04*x), function(x) return (10))
#cols <-heat.colors(5,1)
p <-ggplot()+xlim(c(-10,15000))+ylim(c(-10,210))+xlab("Quantity")+ylab("Price")
# Y-axis
p <- p + geom_segment(aes(x=0,y=-10,xend=0,yend=210), arrow=arrow(length=unit(0.2,"cm")))
# X-axis
p <- p + geom_segment(aes(x=0,y=0,xend=15000,yend=0),arrow=arrow(length=unit(0.2,"cm")))
# Horizontal segment representing optimal quantity 4750
p <- p + geom_segment(aes(x=0,y=105,xend=4750,yend=105),lty=2, col="gray60")
# Vertical segment representing optimal price i.e $105
p <- p + geom_segment(aes(x=4750,y=0,xend=4750,yend=105), lty=2, col="gray60")
# Marginal Revenue curve label
p <- p + geom_text(aes(x=4750,y=0, vjust=5), col="gray60", label="MR")
# Marginal Cost curve label
p <- p + geom_text(aes(x=15000,y=10, vjust=-1), col="gray60", label="MC")
# Demand curve label
p <- p + geom_text(aes(x=10000,y=0, vjust=4), col="gray60", label="D")
# Optimal Quantity label.
p <- p + geom_text(aes(x=4750,y=0, hjust=1, vjust=1.5), col="gray60", label="Qm", size=3)
# Optimal Quantity
p <- p + geom_text(aes(x=4750,y=0, hjust=1, vjust=3), col="gray60", label="(4750)", size=3)
# Optimal Price label
p <- p + geom_text(aes(x=0,y=105, hjust=1, vjust=-2.5), col="gray60", label="Pm", size=3)
#Optimal price
p <- p + geom_text(aes(x=0,y=105, hjust=1, vjust=-1), col="gray60", label="($105)", size=3)
for(i in 1:length(funcs))
p <- p + stat_function(aes(y=0),fun = funcs[[i]], arrow=arrow(length=unit(0.2,"cm")))
# Change in marginal cost due to subsidy.
p <- p + stat_function(aes(y=0),fun = function(x) return(5), lty=2, arrow=arrow(length=unit(0.2,"cm")))
p <- p + geom_text(aes(x=15000,y=5, hjust=-1), col="gray60", label="MC_NEW", size=4)
# Horizontal segment representing optimal quantity 4750
p <- p + geom_segment(aes(x=0,y=102.5,xend=4875,yend=102.5),lty=2, col="gray60")
p <- p + geom_segment(aes(x=4875,y=0,xend=4875,yend=102.5), lty=2, col="gray60")
# Optimal Price label
p <- p + geom_text(aes(x=0,y=105, hjust=.51, vjust=2.5), col="gray60", label="Pm_NEW", size=3)
#Optimal price
p <- p + geom_text(aes(x=0,y=105, hjust=.51, vjust=4.0), col="gray60", label="($102.50)", size=3)
# Optimal Quantity label.
p <- p + geom_text(aes(x=4750,y=0, vjust=1.5, hjust=-.5), col="gray60", label="Qm_NEW", size=3)
# Optimal Quantity
p <- p + geom_text(aes(x=4750,y=0, vjust=3, hjust=-1), col="gray60", label="(4875)", size=3)
print(p)