Najwyraźniej folk wymyślił, jak tworzyć wykresy w stylu xkcd w Mathematica i LaTeX . Czy możemy to zrobić w R? Ggplot2-ers? Geom_xkcd i / lub theme_xkcd?
Chyba w podstawowej grafice, par (xkcd = TRUE)? Jak mam to zrobić?
Jako pierwszy dźgnięcie (i o wiele bardziej elegancko pokazane poniżej) w ggplot2, dodanie argumentu jittera do linii zapewnia doskonały, ręcznie rysowany wygląd. Więc -
ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) +
geom_line(position="jitter", color="red", size=2) + theme_bw()
To dobry przykład - ale osie i czcionki wydają się trudniejsze. Czcionki wydają się jednak rozwiązane (poniżej). Czy to jedyny sposób radzenia sobie z siekierami, aby je wyczyścić i wciągnąć ręcznie? Czy istnieje bardziej eleganckie rozwiązanie? W szczególności, w ggplot2, czy element_line w nowym systemie motywów można zmodyfikować, aby przyjmował argument przypominający jitter?
Odpowiedzi:
Możesz rozważyć następujący pakiet:
Pakiet xkcd : Drukowanie grafiki ggplot2 w stylu XKCD.
Kilka przykładów (wykresy rozrzutu, wykresy słupkowe):
źródło
xkcd
działa, ale próbalibrary(xkcd)
plonów> 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’
i próbaacepack
plonów> install.packages("ace") Warning in install.packages : package ‘ace’ is not available (for R version 3.2.1)
Myśląc zgodnie z tą samą linią, co niektóre inne odpowiedzi, „cofnąłem wykres”, a także dodałem elastyczność lokalizacji etykiet osi X (co wydaje się być powszechne w xkcd) i dowolną etykietę na wykres.
Zauważ, że miałem kilka problemów z ładowaniem czcionki Humor Sans i ręcznie pobrałem ją do katalogu roboczego.
I kod ...
źródło
ggplot2
zrobiła lewę.geom_smooth
zmethod = "loess", span = 0.6, se = FALSE
iposition = position_jitter(h=0.005)
daje mi lepsze wyniki na hałaśliwym danych, a linie są zarówno gładkie i jittered.Podstawowa funkcja rysowania linii:
Oś podstawowa:
I przykładowy kod:
Produkuje:
źródło
Oto próba czcionek oparta na linkach z forów xkcd i
extrafont
pakietu:Jak wspomniano powyżej, na stronie xkcd znajduje się dyskusja na forum o czcionkach : złapałem pierwszą, którą mogłem znaleźć, mogą istnieć inne (lepsze?) Opcje (@jebyrnes publikuje inne źródło możliwych czcionek w komentarzach powyżej - plik TTF jest tutaj ; ktoś zgłosił błąd 404 dla tego źródła, możesz alternatywnie spróbować tutaj lub tutaj , odpowiednio zastępując te adresy URL
xkcdFontURL
poniżej; być może będziesz musiał nieco ciężej popracować, aby pobrać linki opublikowane na Github)(To jest dla szybkiego, jednorazowego użytku: do regularnego użytku należy umieścić go w jakimś standardowym katalogu czcionek systemowych.)
Najbardziej przydatne informacje na temat czcionek znajdowały się na stronie grafub Extrafont - są one pobierane z tego miejsca
Przykład wzięty mniej więcej dosłownie z witryny github:
źródło
Zaprojektowałem kalendarz analityczny o tematyce xkcd za pomocą RStudio. Oto przykład stylu xkcd wykresu słupkowego
Aby wygenerować ten wykres
Oto użyty kod
źródło
Jest to bardzo, bardzo szorstki początek i obejmuje (częściowo) ręcznie rysowany wygląd linii. Zautomatyzowanie tego zajęłoby trochę pracy, ale dodanie szumu AR (1) do funkcji odpowiedzi mogłoby sprawić, że wyglądałoby to na lekko wyciągnięte ręcznie
źródło
Oto moje zdanie na temat
ggplot2
korzystania z części powyższego kodu:Nie jestem pewien, jak wymienić osie, ale można zastosować to samo podejście
jitter
. Następnie należy zaimportować czcionkę z XKCD i nakładać na nią warstwygeom_text
.źródło