Відтворіть графік xkcd процедурно за допомогою улюбленого інструменту побудови графіків


18

В останнім часом було досить багато питань по приводу відпочинку в XKCD -Style графіків , як наступний один ( одна тисячі шістьдесят-чотири ) на різних мовах .

http://xkcd.com/1064/

Ваша мета - відтворити будь-який існуючий комікс xkcd якомога ближче до оригіналу. У коміксі має бути принаймні один простий графік або кругова діаграма або подібний елемент.

Найвища відповідь , яка проголосувала, виграє не раніше ніж через 10 днів після першої дійсної відповіді.

Ваш запис повинен містити код, який відображає xkcd-комікс, як описано вище, мовою графіку, використовуючи принаймні деяке використання його інструменту побудови графіків (Mathematica, MatLab тощо)

  • комікс не повинен зберігатися як образ, він повинен створюватися процедурно
  • на вашому жорсткому диску не повинно бути жодного посилання на оригінальний веб-сайт чи дзеркало його чи його вміст тощо.

Голосуючий повинен оцінювати схожість результатів з оригіналом, а в меншій мірі - красою рішення. Тут немає гольфу з кодом, але очікується максимально коротке та просте рішення.


3
Більшість голосів не є підходящою умовою перемоги - і як мають бути булеві голоси для врахування декількох елементів у різних масштабах? Я думаю, що це питання може мати об'єктивну умову виграшу на основі середньої помилки на піксель, розділеної на довжину коду, або чогось подібного, але, як це існує, воно просто спонукає людей скопіювати і вставити відповіді, які були сильно використані в інших стеках.
Пітер Тейлор

1
@PeterTaylor: саме тому я вказав, що він повинен бути існуючим xkcd коміксом, тому копіювання не буде. Більшість оновлень є загальновживаними критеріями (поряд із "першим рішенням", яке мені не дуже подобається), інакше ви рідко зустрінете тут будь-які проблеми, які не є кодом-гольф (і не виграв Golfscript)
vsz

Відповіді:


8

Ось колючка.

Постскрипт

[ Порахувати видалено, оскільки це не питання про гольф. ]

xkcd1064

Додано розділ "стиль", щоб він виглядав більш мальованим.

xkcd1064, більше "мальованої"

Редагувати: Helvetica реагує краще, ніж кур'єр. Цей "розділовий" розділ перероблено та вдосконалено І додали коментарі.

xkcd1064, навіть більше "мальованої", ніж раніше

%!

%futz with a coordinate pair
/f { 2 { rand 100 mod 100 div 1.47 mul
        dup .4 mul sub add
        exch } repeat } def

/op 2 array def %original point
/cp 2 array def %current point
/setcp { 2 copy cp astore pop } def %set current point
/difcp { cp aload pop %x' y' x y   %diff between cp and point on stack
    3 2 roll exch sub %x' x y'-y
    3 1 roll sub %y'-y x'-x
    exch %dx dy
} def
/scale2 { /n exch def  %scale two values
    n mul exch n mul exch
} def
/add2 {
    3 2 roll add
    3 1 roll add exch
} def
%futz with a path
/fpath {
    2 {
    %flattenpath
    % replace lines with curves
    [ { setcp cp op copy pop /moveto cvx }
        {
            %cp aload pop 4 2 roll 2 copy
            2 copy difcp %x3 y3 x30 y30
            2 copy 1 4 div scale2 %x3 y3 x30 y30 (1/3)x30 (1/3)y30
            cp aload pop add2 %x3 y3 x30 y30 x1 y1
            4 2 roll 3 4 div scale2 %x3 y3 x1 y1 (2/3)x30 (2/3)y30
            cp aload pop add2 %x3 y3 x1 y1 x2 y3
            6 4 roll %x1 y1 x2 y2 x3 y3
            setcp
            /curveto cvx }
        { setcp /curveto cvx }
        { op cp copy pop /closepath cvx } pathforall ] cvx newpath exec
    % chop the curves
    flattenpath
    % futz all the points
    [ { f
        /moveto cvx }
        { f
            /lineto cvx }
        { %f
            f 6 2 roll
            f 6 2 roll
            f 6 2 roll
            2 copy
            /curveto cvx
            3 1 roll
            3{f}repeat /lineto cvx % extra triple-futz'd line after each curve
        }
        { /closepath cvx } pathforall ] cvx newpath exec
    } repeat
} def

%futz with strokes
/oldstroke /stroke load def
/stroke { fpath oldstroke } def

%futz with fills
/oldfill /fill load def
/fill { fpath oldfill } def

%make sure rectstroke doesn't bypass being futzed with
/rectstroke {
    4 2 roll moveto
    1 index 0 rlineto
    0 exch rlineto
    neg 0 rlineto
    closepath
    stroke
} def

%futz with strings
%by making sure show uses our futz'd fill
/show { gsave currentpoint newpath moveto dup
    false charpath 1{fpath}repeat fill grestore stringwidth rmoveto } def

%fatter lines
1 setlinejoin %round joins
currentlinewidth 1.9 mul setlinewidth
%chop curves very small so there's lots of points for futzing
currentflat 6 div setflat

/Helvetica 10 selectfont

<<
/in{72 mul}
>>begin
1 in 1 in translate

0 0 6 in 4 in rectstroke
1 in 3 in moveto (WALKING BACK TO MY) show
1 in 2.8 in moveto (FRONT DOOR AT NIGHT:) show

36 3.5 in moveto
0 -2.8 in rlineto
5 in 0 rlineto
3.45 in .55 in moveto
0 20 rlineto
4.05 in .55 in moveto
0 20 rlineto
2.7 in .40 in moveto
(YARD  STEPS DOOR  INSIDE ) show
0 .05 in rmoveto
.4 in 0 rlineto
currentpoint
stroke
moveto
-10 3 rlineto
0 -6 rlineto fill

2.6 in .45 in moveto
-2 in 0 rlineto
currentpoint
stroke
moveto
10 3 rlineto
0 -6 rlineto fill

(FEAR) .9 in 2.3 in moveto show
(THAT THERE'S) .9 in 2.1 in moveto show
(SOMETHING) .9 in 1.9 in moveto show
(BEHIND ME) .9 in 1.7 in moveto show
1.8 in 1.86 in moveto
2 -26 rlineto
stroke

(FORWARD) 2.2 in 2.1 in moveto show
(SPEED) 2.2 in 1.9 in moveto show
2.75 in 2 in moveto
3 -13 rlineto
stroke

(EMBARRASSMENT) 4.5 in 2.5 in moveto show
4.6 in 2.65 in moveto
-2 20
-5 22
-27 25 rcurveto
stroke

.6 setgray %gray
40 1.6 in moveto
2.7 in 0
2.9 in 20
3.2 in 1.5 in rcurveto
10 20
20 20
30 0 rcurveto
15 -1.7 in
30 -1.8 in
1.4 in -2 in rcurveto
stroke

0 0 1 setrgbcolor %blue
40 1.2 in moveto
.9 in 27
.8 in 20
1.4 in 21 rcurveto
1 in -20
1.2 in 6
1.3 in 1.6 in rcurveto
    10 20
    20 20
    30 0 rcurveto
15 -1.8 in
30 -1.9 in
1.8 in -2.1 in rcurveto
stroke

1 0 0 setrgbcolor %red
40 .9 in moveto
3.3 in 0
3.5 in 20
3.6 in 1.5 in rcurveto
10 72
20 80
30 80 rcurveto
.7 in -10
.3 in -35
1.1 in -40 rcurveto
stroke

%thank you for scrolling all the way down to here. :)

чи можете ви додати до нього якусь «мальовану» стилізацію? :)
Сем Ax

Так. Я спочатку зовсім не помітив цього аспекту. І тоді, коли я перейшов за посиланнями, я був абсолютно переповнений. Жирні лінії не повинні бути великими. І у мене є метод від Кассельмана для переосмислення шляху. Отже, якщо я можу зрозуміти ці перетворення математики, я маю змогу їх повторити. Набагато більше завдання, ніж я спочатку думав.
luser droog

Навіть без цих якостей дуже гарна робота.
Сем Ax

І супер чудова робота по укладанню!
Сем Ax

7

HTML5

@font-face {
  font-family: 'Humor Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Humor Sans'), local('Humor Sans-Regular'), url("data:font/woff;base64,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") format('woff');
}
body {
    font-family: 'Humor Sans';
    margin: 2em;
    background: #DDD;
    text-shadow: 1px 1px 2px #FFF;
}
h1 {
    font-family:Lucida,Helvetica,sans-serif;
}
.h1d {
    display: inline;
    font-size: .8em;
}
path,rect { fill: none;
    stroke:#000000;
    stroke-width:0.00329859;
    stroke-linecap:butt;
    stroke-linejoin:round;
    stroke-miterlimit:10.43299961;
 }
text {
    text-align:start;
    letter-spacing:0px;
    word-spacing:0px;
    writing-mode:lr-tb;
    font-size:14px;
    text-anchor:start;
    fill:#000000;
    fill-opacity:1;
    stroke:none;
    font-family:Humor Sans;
}
text {
    font-size:0.01944444px;
    text-anchor:middle;
    fill:#000000;
    fill-opacity:1;
    stroke:none;
    font-family:Humor Sans;
}
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Front Door ( from xkcd.com 1064 )</title>
  </head>
<body><h1>Front Door <div class="h1d">( from xkcd.com 1064 )</div></h1>
<svg xmlns="http://www.w3.org/2000/svg" width="640" height="434"
   version="1.1" viewBox="0 0 0.7876308 0.53355077">
  <defs>
    <marker id="Aen" style="overflow:visible">
      <path d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill-rule:evenodd;fill:#000;stroke:#000000;stroke-width:1pt" />
    </marker>
    <marker orient="auto" id="Ast" style="overflow:visible">
      <path d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
         transform="matrix(-0.4,0,0,-0.4,-1.4,0)"
         style="fill-rule:evenodd;fill:#000;stroke:#000000;stroke-width:1pt" />
    </marker>
  </defs>
  <rect width="0.75612795" height="0.50201935" x="0.015758738" y="0.015780471" />
  <path d="m 0.08162198,0.08036774 c -3.384e-4,3.2166e-4 -7.6617e-4,0.35262886 -7.6617e-4,0.35262886 0,0 0.20318503,-6.6026e-4 0.29000566,-0.003213 0.0402085,3.6731e-4 0.0806898,-1.3866e-4 0.12100339,-4.2191e-4 0.0422491,-4.676e-5 0.0848177,0.001196 0.12714108,1.4026e-4 0.0292134,0.0012 0.0579496,7.8663e-4 0.0872307,8.041e-5" />
  <path d="M 0.45045642,0.44967094 C 0.45097434,0.43767424 0.44992661,0.42569324 0.4498655,0.41370014" />
  <path d="m 0.52462262,0.44857719 c 0.001364,-0.0112841 -0.001303,-0.022673 8.8508e-4,-0.0339046" />
  <path d="m 0.34455432,0.46185837 c -0.0838098,-0.00177 -0.16763839,9.02e-5 -0.25145536,-4.499e-4" style="marker-end:url(#Ast)" />
  <path d="m 0.36372087,0.26833529 c 3.15e-6,-3.093e-5 0.003925,0.021959 0.003958,0.0219625" />
  <path d="m 0.59455272,0.18635665 c 0.00168,-0.0249062 -0.0194278,-0.0449558 -0.0436226,-0.042955 -0.001466,-1.5486e-4 -0.002932,-3.0973e-4 -0.004398,-4.6459e-4" />
  <path d="m 0.08896568,0.31883844 c 0.0589995,-0.004388 0.11835478,4.8486e-4 0.17689559,-0.007727 0.0452821,-0.002558 0.0920316,-0.008761 0.13292997,-0.0296799 0.0495136,-0.0206019 0.0702543,-0.0754087 0.082167,-0.12423165 -0.001544,-0.0316524 0.0363005,-0.0771322 0.0574533,-0.031946 0.009799,0.0468904 0.0124403,0.0957944 0.0257953,0.14199884 0.0103229,0.0424564 0.0381648,0.0821154 0.0814383,0.0955288 0.0230248,0.006738 0.0463641,0.0136174 0.0701731,0.01698" style="stroke:#888" />
  <path d="m 0.08766361,0.36678952 c 0.0463076,-0.0161779 0.0920382,-0.0420708 0.14283849,-0.0357173 0.0467333,-0.004581 0.0974621,0.0266481 0.14082991,-0.00179 0.0400306,-0.0301432 0.041483,-0.0866619 0.0490443,-0.13214834 0.003929,-0.030081 -0.00375,-0.0999028 0.0422392,-0.0879794 0.0291414,0.0376662 0.0177989,0.0902038 0.0319018,0.1336763 0.009362,0.0507676 0.0330856,0.10817744 0.0871312,0.12415282 0.0508722,0.0193263 0.0767224,0.0174745 0.11889504,0.0257316" style="stroke:#00f" />
  <path d="m 0.08912193,0.4046365 c 0.10169167,1.097e-5 0.2041028,3.5438e-4 0.3047905,-0.0155419 0.0458292,-0.008171 0.0971567,-0.0242812 0.12178371,-0.0670869 0.025388,-0.0534434 0.0183231,-0.11451516 0.0333489,-0.17061477 -0.003977,-0.0433016 0.0436224,-0.0993166 0.0831427,-0.0568712 0.0246552,0.0226559 0.0477548,0.0560862 0.0858377,0.0521295" style="stroke:#f00" />
  <path d="m 0.70840577,0.46185837 c -0.002849,8.248e-5 -0.0849355,0.001616 -0.0849355,0.001616" style="marker-start:url(#Aen)" />
  <path d="m 0.24465913,0.2858699 c 9.6794e-4,0.0147144 0.001383,0.0294673 0.002814,0.0441494" />
  <text x="100.15588" y="48.485607" transform="scale(0.00138889,0.00138889)"
    style="font-size:14px;text-anchor:start">
    <tspan x="100.15588" y="48.485607" id="tspan7010">WALKING BACK TO MY</tspan>
    <tspan x="100.15588" y="65.285591" id="tspan7012">FRONT DOOR AT NIGHT:</tspan></text>
  <rect width="0.24843951" height="0.065260872" x="0.12345294" y="0.039088331" />
  <text x="0.23551519" y="0.20231472"><tspan x="0.23551519" y="0.20231472">fear</tspan>
    <tspan x="0.23551519" y="0.22564805">ThAT there's</tspan>
    <tspan x="0.23551519" y="0.24898137">something</tspan>
    <tspan x="0.23551519" y="0.2723147">behing me</tspan></text>
  <text x="0.36015913" y="0.22917171"><tspan x="0.36015913" y="0.22917171">fORWarD</tspan>
    <tspan x="0.36015913" y="0.25250503">SPEED</tspan></text>
  <text x="0.37393194" y="0.46812996"><tspan x="0.37393194" y="0.46812996">yarD</tspan>
    <tspan x="0.45037103" y="0.46812996">step</tspan>
    <tspan x="0.52267832" y="0.46812996">door</tspan>
    <tspan x="0.58878779" y="0.46812996">inside</tspan></text>
  <text x="0.63905853" y="0.20506927">
    <tspan x="0.63905853" y="0.20506927">emBARRASSMENT</tspan></text>
</svg>
</body></html>


4

Пітон

Використовує метод злегка чит-у xkcd у matplotlib:

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage.filters import gaussian_filter1d

plt.xkcd()

x = np.linspace(0,10,1000)
unit = np.linspace(0,1,100)

speed = np.r_[np.ones(500)*3,3+5*unit**4.,np.ones(100)*8,1+7*unit[::-1]**2,np.ones(200)]
speed = gaussian_filter1d(speed,18)

fear = np.r_[np.linspace(0.5,2,450),2+6*unit**4,np.ones(100)*8,8*unit[::-1]**2,np.zeros(250)+0.1]
fear = gaussian_filter1d(fear,18)
fear_gauss_bump = 0.8*np.exp(-np.power(x-2.5,2.)/(2*np.power(1, 2.)))
fear += fear_gauss_bump

embarrassment = np.r_[np.zeros(600)+0.1, 9.5*unit**2, 9.5-np.linspace(0,1.5,300)]
embarrassment = gaussian_filter1d(embarrassment,60)

plt.figure(figsize=(12,6))
plt.plot(x,speed,c="gray")
plt.plot(x,fear,c="#1E9FDB")
plt.plot(x,embarrassment,c="r")

plt.plot([2.5,2.7],[3.9,2.3],c='k')
plt.plot([4.3,4.5],[3.6,3.1],c='k')
plt.plot(np.linspace(7.3,7.8,15),(0.25-(np.linspace(7.3,7.8,15)-7.3)**2)**0.5+7,c='k')

ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
#plt.ylim([0,10])
ax.set_xticks([6,7])
ax.set_xticklabels(["STEPS","DOOR"])
ax.set_yticks([])

ax.text(2,4,"FEAR\nTHAT THERE'S\nSOMETHING\nBEHIND ME",horizontalalignment='center')
ax.text(3.9,3.4,"FORWARD\nSPEED",horizontalalignment='center')
ax.text(7.4,6.6,"EMBARRASSMENT")
ax.text(1,8,"WALKING BACK TO MY\nFRONT DOOR AT NIGHT:",bbox={'facecolor':'none', 'edgecolor':'black'})
ax.annotate("YARD", xy=(0.5,-0.3), xytext=(4.5,-0.4),annotation_clip=False,arrowprops={'facecolor':'black', 'shrink':0.01, 'width':0.5})
ax.annotate("INSIDE", xy=(10,-0.3), xytext=(7.5,-0.4),annotation_clip=False,arrowprops={'facecolor':'black', 'shrink':0.01, 'width':0.5})

plt.show()

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.