Anscheinend haben die Leute herausgefunden, wie man in Mathematica und in LaTeX Diagramme im xkcd- Stil erstellt . Können wir das in R machen? Ggplot2-er? Ein geom_xkcd und / oder theme_xkcd?
Ich denke in Basisgrafiken, par (xkcd = TRUE)? Wie mache ich es?
Als ersten Stich (und wie viel eleganter unten gezeigt) in ggplot2 sorgt das Hinzufügen des Jitter-Arguments zu einer Linie für einen großartigen handgezeichneten Look. Damit -
ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) +
geom_line(position="jitter", color="red", size=2) + theme_bw()
Es ist ein schönes Beispiel - aber die Achsen und Schriftarten erscheinen schwieriger. Schriftarten werden jedoch gelöst angezeigt (siehe unten). Ist der einzige Weg, mit Äxten umzugehen, um sie auszublenden und von Hand einzuziehen? Gibt es eine elegantere Lösung? Kann element_line im neuen Themensystem in ggplot2 insbesondere so geändert werden, dass ein jitterartiges Argument verwendet wird?
Antworten:
Möglicherweise möchten Sie das folgende Paket in Betracht ziehen:
Paket xkcd : Zeichnen von ggplot2-Grafiken in einem XKCD-Stil.
Einige Beispiele (Streudiagramme, Balkendiagramme):
quelle
xkcd
, aber versuchen,library(xkcd)
Erträge zu erzielen> library(xkcd) Loading required package: extrafont Registering fonts with R Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : there is no package called ‘acepack’ Error: package or namespace load failed for ‘xkcd’
und Erträge zuacepack
erzielen> install.packages("ace") Warning in install.packages : package ‘ace’ is not available (for R version 3.2.1)
In Anlehnung an einige der anderen Antworten habe ich das Diagramm "nicht gezeichnet" und auch die Flexibilität der Beschriftungspositionen auf der x-Achse (die in xkcd üblich zu sein scheint) und eine beliebige Beschriftung auf dem Diagramm hinzugefügt Diagramm.
Beachten Sie, dass ich einige Probleme beim Laden der Humor Sans-Schriftart hatte und sie manuell in das Arbeitsverzeichnis heruntergeladen habe.
Und der Code ...
quelle
ggplot2
hat den Trick gemacht.geom_smooth
mitmethod = "loess", span = 0.6, se = FALSE
undposition = position_jitter(h=0.005)
bei rauschenden Daten bessere Ergebnisse liefert, da die Linien sowohl glatt als auch verwackelt sind.Grundlegende Strichzeichnungsfunktion:
Grundachse:
Und Beispielcode:
Produziert:
quelle
Hier ist ein Versuch mit den Schriftarten, basierend auf Links aus den xkcd-Foren und dem
extrafont
Paket:Wie oben erwähnt, gibt es auf der xkcd-Website eine Forumsdiskussion über Schriftarten : Ich habe die erste gefunden, die ich finden konnte. Möglicherweise gibt es andere (bessere?) Optionen (@jebyrnes veröffentlicht eine weitere Quelle für mögliche Schriftarten in den obigen Kommentaren - die TTF-Datei ist hier ; jemand hat einen 404-Fehler für diese Quelle gemeldet. Sie können es auch hier oder hier versuchen und die folgenden URLs entsprechend ersetzen.
xkcdFontURL
Möglicherweise müssen Sie etwas härter arbeiten, um die von Github geposteten Links abzurufen.(Dies ist für den einmaligen Quickie-Gebrauch gedacht: Für den regulären Gebrauch sollten Sie es in einem Standard-Systemschriftverzeichnis ablegen.)
Die nützlichsten Informationen zu Schriftarten befanden sich auf der Extrafont-Github-Site - diese wird von dort übernommen
Beispiel mehr oder weniger wörtlich von der Github-Seite genommen:
quelle
Ich habe einen Analysekalender mit xkcd-Motiven nur mit RStudio entworfen. Hier ist ein Beispiel für den xkcd-Stil eines Balkendiagramms
Um dieses Diagramm zu generieren
Hier ist der verwendete Code
quelle
Dies ist ein sehr, sehr rauer Anfang und deckt nur (teilweise) das handgezeichnete Erscheinungsbild der Linien ab. Es würde ein wenig Arbeit erfordern, um dies zu automatisieren, aber das Hinzufügen von AR (1) -Rauschen zur Antwortfunktion könnte dazu führen, dass es leicht von Hand gezeichnet erscheint
quelle
Hier ist meine Sicht auf die
ggplot2
Verwendung eines Teils des Codes von oben:Ich bin mir nicht sicher, wie ich die Achsen ersetzen soll, könnte aber den gleichen Ansatz mit verwenden
jitter
. Dann geht es darum, die Schriftart aus XKCD zu importieren und mit zu überlagerngeom_text
.quelle