Kaip galime sukurti xkcd stiliaus grafiką?

Matyt, žmonės suprato, kaip padaryti „ xkcd“ stiliaus grafikus „Mathematica“ ir „LaTeX“ . Ar galime tai padaryti R? Ggplot2-ers? Geom_xkcd ir / arba theme_xkcd?

Manau, kad bazinė linija, par (xkcd = TRUE)? Kaip tai padaryti?

2019

583
01 окт. nustatė jebyrnes spalio 01 d 2012-10-01 17:22 '12, 17:22, 2012-10-01 17:22
@ 7 atsakymai

Galbūt norėsite apsvarstyti šį paketą:

„Xkcd“ paketas : „ggplot2“ grafikos kūrimas XKCD stiliaus.

 library(xkcd) vignette("xkcd-intro") 

Kai kurie pavyzdžiai („Scatterplots“, „Bar Charts“):

  • sklaidos taškai:

2019

354
16 мая '13 в 23:49 2013-05-16 23:49 Atsakymą davė Emilio Torres Manzanera gegužės 16 d., 13 val., 11:49, 2013-05-16 23:49

Girdėdamas tuos pačius principus, kaip ir kai kurie kiti atsakymai, aš „nepritariau“ diagramai ir taip pat pridėjau prie x ašių etikečių, kurios, atrodo, yra xkcd, ir lankstumo diagramoje.

Atkreipkite dėmesį, kad aš turėjau keletą problemų atsisiųsti „Humor Sans“ šriftą ir rankiniu būdu jį įkelti į darbo katalogą.

2019

197
02 окт. atsakymas, kurį pateikė Mark Bulling 2012-10-02 01:11 '12 ne 1:11 2012-10-02 01:11

Pagrindinė brėžinių braižymo funkcija:

 xkcd_line <- function(x, y, color) { len <- length(x); rg <- par("usr"); yjitter <- (rg[4] - rg[3]) / 1000; xjitter <- (rg[2] - rg[1]) / 1000; x_mod <- x + rnorm(len) * xjitter; y_mod <- y + rnorm(len) * yjitter; lines(x_mod, y_mod, col='white', lwd=10); lines(x_mod, y_mod, col=color, lwd=5); } 

Pradinė padėtis:

 xkcd_axis <- function() {  rg <- par("usr");  yaxis <- 1:100 / 100 * (rg[4] - rg[3]) + rg[3];  xaxis <- 1:100 / 100 * (rg[2] - rg[1]) + rg[1];  xkcd_line(1:100 * 0 + rg[1] + (rg[2]-rg[1])/100, yaxis,'black')  xkcd_line(xaxis, 1:100 * 0 + rg[3] + (rg[4]-rg[3])/100, 'black') } 

Ir pavyzdžio kodas:

 data <- data.frame(x=1:100) data$one <- exp(-((data$x - 50)/10)^2) data$two <- sin(data$x/10) plot.new() plot.window( c(min(data$x),max(data$x)), c(min(c(data$one,data$two)),max(c(data$one,data$two)))) xkcd_axis() xkcd_line(data$x, data$one, 'red') xkcd_line(data$x, data$two, 'blue') 

Pateikia:

2019

179
01 окт. atsakymas, kurį pateikė user295691 01 oct. 2012-10-01 23:47 '12, 23:47, 2012-10-01 23:47

Štai bandymas šriftams, pagrįstas nuorodomis į „xkcd“ forumus ir „ extrafont paketą:

Kaip minėta pirmiau, yra diskusija apie šriftus „xkcd“ svetainėje : nuėmiau pirmąjį, kurį galima rasti, gali būti ir kitų (geriau?) (@Jebyrnes paskelbia kitą galimų šriftų šaltinį aukščiau pateiktose pastabose - TTF failas čia , kas nors pranešė 404 klaida šiam šaltiniui, taip pat galite pabandyti čia arba čia , pakeisdami šiuos URL, jei xkcdFontURL toliau pateiktumėte xkcdFontURL , jums gali tekti šiek tiek laiko rasti „Github“ paskelbtas nuorodas)

  xkcdFontURL <- "http://simonsoftware.se/other/xkcd.ttf" download.file(xkcdFontURL,dest="xkcd.ttf",mode="wb") 

(Tai skirta greitam, vienkartiniam naudojimui: normaliam naudojimui turėtumėte įdėti jį į kai kuriuos standartinius sistemos šriftų katalogus.)

  library(extrafont) 

Naudingiausia šrifto informacija buvo pateikta „extrafont github“ svetainėje - tai iš ten.

 font_import(".") ## because we downloaded to working directory loadfonts() 

Pavyzdys, paimtas daugiau ar mažiau žodžiu iš „github“ svetainės:

 library(ggplot2) p <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="xkcd")) ggsave("xkcd_ggplot.pdf", plot=p, width=4, height=4) ## needed for Windows: ## Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.05/bin/gswin32c.exe") embed_fonts("xkcd_ggplot.pdf") 

2019

126
01 окт. Ben Bolker atsakymas spalio 01 d 2012-10-01 23:09 '12 - 23:09 2012-10-01 23:09

Aš sukūriau kalendoriaus kalendoriaus analizę xkcd naudojant RStudio. Čia pateikiamas xkcd stiliaus linijos meno pavyzdys.

  • Naudojamas šriftas = HumorSans.ttf [aukščiau pateikta nuoroda]
  • Naudojamas paketas [xkcd]

Norėdami sukurti šį grafiką 2019

26
24 дек. atsakymas pateikiamas d2a2d 24 dec. 2014-12-24 10:24 '14 ne 10:24 2014-12-24 10:24

Tai labai, labai grubus pradžia ir apima tik (iš dalies) linijų išvaizdą. Tai būtų šiek tiek darbo automatizuoti, tačiau kai kurių AR (1) triukšmo priskyrimas atsakymo funkcijai gali atrodyti šiek tiek ilgas.

 set.seed(551) x <- seq(0, 1, length.out = 1000) y <- sin(x) imperfect <- arima.sim(n = length(y), model = list(ar = c(.9999))) imperfect <- scale(imperfect) z <- y + imperfect*.005 plot(x, z, type = "l", col = "blue", lwd = 2) 
14
01 окт. Atsakyti Dason Oct 01 2012-10-01 17:41 '12, 17:41 2012-10-01 17:41

Čia yra mano ggplot2 eilutės, naudojant tam tikrą kodą:

 ggplot()+geom_line(aes(x=seq(0,1,length.out=1000),y=sin(x)),position=position_jitter(width=0.02),lwd=1.5,col="white")+ geom_line(aes(x=seq(0,1,length.out=1000),y=sin(x)),position=position_jitter(width=0.004),lwd=1.4,col="red")+ geom_line(aes(x=seq(0,1,length.out=1000),y=cos(x)),position=position_jitter(width=0.02),lwd=1.5,col="white")+ geom_line(aes(x=seq(0,1,length.out=1000),y=cos(x)),position=position_jitter(width=0.004),lwd=1.4,col="blue")+ theme_bw()+theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank()) 

Aš nežinau, kaip pakeisti ašį, bet galiu naudoti tą patį požiūrį su jitter . Tada reikia importuoti šriftą iš XKCD ir sluoksnių naudojant geom_text .

13
01 окт. atsakymas pateikiamas jslefche 01 okt. 2012-10-01 23:01 '12 11:01 pm 2012-10-01 23:01

Kiti klausimai apie žymes arba Užduoti klausimą