Subscribed unsubscribe Subscribe Subscribe

Augmented Usamimi

it { is_expected.to be_blog.written_by(izumin5210) }

【gnuplot】論文のグラフはgnuplotとrakeを使うと捗る

gnuplot Ruby

捗ります.

f:id:izumin5210:20150124070332p:plain

*.pltファイルとかに書いてると何が何だかわからなくなってくるが,rakeだとrake -vTでタスク一覧見れたりして楽. gnuplot gemを利用してRubygnuplotの処理を書ける(rubygemsgnuplotは更新が止まっていてdashtypeとかに対応していないので注意).

変数が違うとかでグラフが複数発生する場合もループしてタスク生成すればいいだけなので超簡単.

namespace :graph do
  namespace :flick do
    namespace :features do
      [100, 300].each do |char_count|
        desc "Plot recognition accuracy of individual features (#{char_count} letters)"
        task :"c#{char_count}" do
          draw_features_graph(char_count)
        end
      end

      def draw_features_graph(char_count)
        Gnuplot.open do |gp|
          Gnuplot::Plot.new(gp) do |plot|
            # グラフ書く処理
          end
        end
      end
    end
  end
end

線種(dashtype)や点種(pointtype),色(linecolorなど)は定数定義しておけばわかりやすい.

module Gnuplot
  module PointType
    DOTTED = 0
    PLUS = 1
    CROSS = 2
    ASTERISK = 3
    EMPTY_SQUARE = 4
    FILLED_SQUARE = 5
    EMPTY_CIRCLE = 6
    FILLED_CIRCLE = 7
    EMPTY_TRIANGLE = 8
    FILLED_TRIANGLE = 9
    EMPTY_NABLA = 10
    FILLED_NABLA = 11
    EMPTY_RHOMBUS = 12
    FILLED_RHOMBUS = 13
  end

  module DashType
    SOLID = 1
    DASHED = 2
    SHORT_DASHED = 3
    DOTTED = 4
    DOT_DASHED = 5
    DOT_SHORT_DASHED = 6
    TWO_DASHED = 7
    DOT_DOT_DASHED = 8
    TRHEE_DASHED = 9
  end

  module Color
    RED = '"red"'
    GREEN = '"green"'
    BLUE = '"blue"'
    MAGENTA = '"magenta"'
    CYAN = '"cyan"'
    YELLOW = '"yellow"'
    BLACK = '"black"'
    ORANGE = '"orange"'
    GREY = '"grey"'
  end
end

さあ,みんなもrakeでグラフを描こう.

[改訂第6版] LaTeX2ε美文書作成入門

[改訂第6版] LaTeX2ε美文書作成入門