ggplot2中讓圖形秒變「手繪風」

blank

ggplot2中讓圖形秒變「手繪風」

前景提要:
一行Python代碼讓圖形秒變「手繪風」
一款蠢萌蠢萌的可視化工具

xkcd主要有以下6個屬性

theme_xkcd Creates an XKCD theme theme_xkcd Creates an XKCD theme xkcd-package Plotting ggplot2 Graphics in an XKCD Style xkcdaxis Plot the axis xkcdline Draw lines or circunferences xkcdman Draw a stick figure xkcdrect Draw fuzzy rectangles xkcd-package Plotting ggplot2 Graphics in an XKCD Style theme_xkcd Creates an XKCD theme xkcd-package Plotting ggplot2 Graphics in an XKCD Style xkcdaxis Plot the axis xkcdline Draw lines or circunferences xkcdman Draw a stick figure xkcdrect Draw fuzzy rectangles xkcdaxis Plot the axis theme_xkcd Creates an XKCD theme xkcd-package Plotting ggplot2 Graphics in an XKCD Style xkcdaxis Plot the axis xkcdline Draw lines or circunferences xkcdman Draw a stick figure xkcdrect Draw fuzzy rectangles xkcdline Draw lines or circunferences theme_xkcd Creates an XKCD theme xkcd-package Plotting ggplot2 Graphics in an XKCD Style xkcdaxis Plot the axis xkcdline Draw lines or circunferences xkcdman Draw a stick figure xkcdrect Draw fuzzy rectangles xkcdman Draw a stick figure theme_xkcd Creates an XKCD theme xkcd-package Plotting ggplot2 Graphics in an XKCD Style xkcdaxis Plot the axis xkcdline Draw lines or circunferences xkcdman Draw a stick figure xkcdrect Draw fuzzy rectangles

xkcd使用前準備

#安裝xkcd #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE) options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE) install.packages("xkcd",dependencies = TRUE) #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE) # 準備xkcd字體--本文在mac下,其他系統會有所差異library(extrafont) #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE) system("cp xkcd.ttf ~/Library/Fonts/") #安装xkcd options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages("xkcd",dependencies = TRUE) # 准备xkcd字体--本文在mac下,其他系统会有所差异library(extrafont) download.file("http://simonsoftware.se/other/xkcd.ttf", dest = "xkcd.ttf", mode = "wb") system("cp xkcd.ttf ~/Library/Fonts/") font_import(pattern = "[X/x]kcd", prompt = FALSE)

xkcd使用小例子

全面介紹了xkcd 6個屬性的使用

volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) 64251)) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) p <- ggplot() + labs(title="Lovely XKCD IN R") + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) #xkcdrect繪製漫畫風格柱子邊界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) #theme_xkcd添加漫畫風格主題theme_xkcd() + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) #xkcdaxis添加漫畫風格軸xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) xrange <- range(volunteers$year) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) yrange <- range(volunteers$number) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) ratioxy <- diff(xrange)/diff(yrange) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) angleofneck = angleofneck, color = color) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7) #xkcdman添加漫畫風格小人p + xkcdman(mapping, dataman) + volunteers <- data.frame(year = c(2007:2011), number = c(56470, 56998, 59686, 61783, 64251)) datalines <- data.frame(xbegin=c(2007.3,2008.5),ybegin=c(63000,59600), xend=c(2012.5,2011.3), yend=c(68400,70000)) p <- ggplot() + labs(title="Lovely XKCD IN R") + #xkcdrect绘制漫画风格柱子边界xkcdrect(aes(xmin = year, xmax = year + 0.3, ymin = number, ymax = number + 3600), volunteers, fill = "#dc2624", colour = "#2b4750") + #theme_xkcd添加漫画风格主题theme_xkcd() + #xkcdaxis添加漫画风格轴xkcdaxis(range(c(2007, 2012)), range(c(56000, 70000))) xrange <- range(volunteers$year) yrange <- range(volunteers$number) ratioxy <- diff(xrange)/diff(yrange) mapping <- aes(x = x, y = y, scale = scale, ratioxy = ratioxy, angleofspine = angleofspine, anglerighthumerus = anglerighthumerus, anglelefthumerus = anglelefthumerus, anglerightradius = anglerightradius, angleleftradius = angleleftradius, anglerightleg = anglerightleg, angleleftleg = angleleftleg, angleofneck = angleofneck, color = color) dataman <- data.frame(x = c(2009.5), y = c(70000), scale = c(2000), ratioxy = ratioxy, angleofspine = -pi/2, anglerighthumerus = -pi/6, anglelefthumerus = pi + pi/6, anglerightradius = -pi/12, angleleftradius = -pi/8, angleleftleg = 3 * pi/2 + pi/12, anglerightleg = 3 * pi/2 - pi/12, angleofneck = runif(1, min = 3 * pi/2 - pi/10, max = 3 * pi/2 + pi/10), color = c("MAX")) #xkcdman添加漫画风格小人p + xkcdman(mapping, dataman) + #xkcdline添加漫画曲线xkcdline(aes(x=xbegin,y=ybegin,xend=xend,yend=yend),datalines, xjitteramount = 0.7)

blank

更多demo

blank
blank
blank

。 。 。 。 。 。 。 。 。 。 。

Ref:


blank

「歡迎關注公眾號」

What do you think?

Written by marketer

blank

【AB測試最全乾貨】史上最全知識點及常見面試題(下篇)

blank

常用CSS代碼大全(工作必備)