Создайте график xkcd процедурно с помощью вашего любимого инструмента для построения графиков.


18

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

http://xkcd.com/1064/

Ваша цель - воссоздать любой существующий комикс xkcd как можно ближе к оригиналу. У комикса должен быть хотя бы один простой график, круговая диаграмма или аналогичный элемент.

Ответ , получивший наибольшее количество голосов, побеждает не раньше, чем через 10 дней после первого действительного ответа.

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

  • комикс не должен храниться как изображение, он должен быть сгенерирован процедурно
  • не должно быть никакой ссылки на оригинальный сайт или его зеркало, или его содержимое на жестком диске и т. д.

Голоса должны оценить сходство результатов с оригиналом и, в меньшей степени, красоту решения. Здесь нет кодекса гольфа, но ожидается максимально короткое и простое решение.


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

1
@PeterTaylor: вот почему я указал, что это должен быть существующий комикс xkcd, поэтому копирование не будет. Большинство upvotes - это часто используемые критерии (наряду с «первым решением», которое мне не очень нравится), в противном случае вы редко найдете здесь какие-либо проблемы, которые не являются code-golf (и не выиграны 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. :)

Можете ли вы добавить некоторые из "рисованной" стилизации к нему? :)
Sam Axe

Да. Сначала я полностью упустил из виду этот аспект. А потом, когда я перешел по ссылкам, я был совершенно ошеломлен. Жирные линии не должны быть важными. И у меня есть метод от Кассельмана, чтобы переосмыслить путь. Поэтому, если я смогу понять эти преобразования математики, я смогу воспроизвести их. Гораздо большая задача, чем я думал.
Люсер Дрог

Даже без этих качеств очень очень хорошая работа.
Сэм Топ

И супер отличная работа по стайлингу!
Сэм Топ

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.