r - How to draw a nice arrow in ggplot2 -


i creating ggplot chart want have arrows between 2 points. main task done geom_line(arrow = arrow()). however, want have "beautiful" thick arrows. resizing arrow via size= doesn't since messes head of arrow completely. illustrate problems:

create sample data , plot:

 name <- c("a", "a", "b", "b", "c", "c")  year <- c(2016, 2011, 2016, 2011, 2016, 2011)  year <- as.factor(year)  value <- c(1, 4, 1, 5, 2, 8)  data <- data.frame(name, year, value)  ggplot(data, aes(x=value, y=name)) +    geom_point(size=5, aes(colour=year)) +   geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed")) 

the resulting plot looks that:

plot1

now i've tried "thicken" arrows...

ggplot(data, aes(x=value, y=name)) +    geom_point(size=5, aes(colour=year)) +   geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"), size = 3) 

that's result shown here:

plot2

my question: there way plot "beautiful" thick arrows?

i use geom_segment create arrow. need modify data "long" "wide" format (usually using dcast reshape2 or data.table package). time tried using base's reshape function.

ggplot(data, aes(x=value, y=name)) +    geom_point(size=5, aes(colour=year)) +   geom_segment(data = reshape(data, v.names="value", idvar = "name", timevar = "year", direction = "wide"),                aes(x=value.2011, xend=value.2016, y=name, yend=name), size = 2,                arrow = arrow(length = unit(0.5, "cm"))) 

arrow.segment

edit: found same issue pertains "closed" type arrows. now, try save plot vector graph (pdf or svg, using ggsave or export menu in plots tab). result not "messy".

svg


Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

delphi - Take screenshot in webcam using VFrames in Console Application -

c++ - Migration from QScriptEngine to QJSEngine -