Ruby|Gviz gem에서 텍스트 내용, 모양, 색상을 무작위로 선택하여 그래프 생성

7887 단어 GraphvizRuby

Ruby|Gviz gem에서 텍스트 내용, 모양, 색상을 무작위로 선택하여 그래프 생성


개요


Gviz gem에서 텍스트 내용, 모양, 색상을 무작위로 선택하여 그래프를 생성합니다.
이 행위는 무의미하다.
텍스트는 Lorem ipsum을 사용합니다.

Loem ipsum이란?


아래 참조.
http://ja.wikipedia.org/wiki/Lorem_ipsum

Loerm ipsum 텍스트


Emmet pluggin은 Sublime Text2에서 가져옵니다.
Emmet 명령이 Ctrl+E에서 확장될 때
lorem10.item*5
이렇게이렇게 loerm ipsum의 10단어× 다섯 줄에서 50개의 단어를 얻습니다.
<div class="item">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, nam.</div>
<div class="item">Aliquam, hic tempora iure quibusdam voluptatibus natus perferendis maiores veritatis.</div>
<div class="item">Doloribus dignissimos odio deleniti dolorum unde doloremque ex eaque voluptates.</div>
<div class="item">Ea placeat dolor quam provident distinctio voluptatibus, fuga ut incidunt.</div>
<div class="item">Ea, reiciendis repudiandae magnam aliquam eum debitis aliquid atque maiores.</div>

샘플 코드

require 'gviz'
require 'date'

lorem_ipsum = <<-EOS
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit, nam.
Aliquam, hic tempora iure quibusdam voluptatibus natus perferendis maiores veritatis.
Doloribus dignissimos odio deleniti dolorum unde doloremque ex eaque voluptates.
Ea placeat dolor quam provident distinctio voluptatibus, fuga ut incidunt.
Ea, reiciendis repudiandae magnam aliquam eum debitis aliquid atque maiores.
EOS

lorem_ipsum = lorem_ipsum.gsub(/[\n,\.]/, '').split(' ')
loerm_samples = lorem_ipsum.sample(9).map(&:to_sym)

shapes = %w(box polygon ellipse oval circle point egg triangle plaintext diamond trapezium parallelogram house pentagon hexagon septagon octagon doublecircle doubleoctagon tripleoctagon invtriangle invtrapezium invhouse Mdiamond Msquare Mcircle rect rectangle square star none underline note tab folder box3d component promoter cds terminator utr primersite restrictionsite fivepoverhang threepoverhang noverhang assembly signature insulator ribosite rnastab proteasesite proteinstab rpromoter rarrow larrow lpromoter)
shape_samples = shapes.sample(18)

colorschemes = %i(paired10 brbg10 piyg10 prgn10 puor10)
colorscheme = colorschemes.sample

Graph do
  global layout:'neato', overlap:false
  loerm_samples.each_cons(2).with_index(1) do |loerms, i|
    route loerms.first => loerms.last
    loerms.each_with_index do |loerm, j|
      node loerm, {:shape => shape_samples[2 * (i + j - 1)], :colorscheme=> colorscheme,:style => :filled, fillcolor: i%11 }
    end
  end
  route loerm_samples.last => loerm_samples.first
  date_sufix = DateTime.now.strftime("%Y%m%d_%H%M%S")
  save("loerm_#{date_sufix}".to_sym, :png)
end

1차 출력



2차 출력



3차 출력


좋은 웹페이지 즐겨찾기