2017-11-29 22 views
-3

共通の横軸をgonum/plotで複数のラインプロットにすることはできますか?gonum/plotの横軸を共有する複数のラインプロット

matplotlibでは、次のようになります。 Sharing X axis

+1

のGoDocエントリの下に別の例を見つけることができますしてください[あなたが試したことを示して、具体的に何が間違っていたのかを説明しています(https://stackoverflow.com/help/mcve)。 – Adrian

+0

@Adrian、ライブラリに特定の機能があるかどうか尋ねています。それは文書化されていませんが、おそらくそれを行う方法があります。私は自分のコードに問題はありません。だからあなたの提案はここでは不適切だと思う。 –

答えて

1

はい、可能です。あなたはplot.Alignを使用することができます。

package main 

import (
    "math/rand" 
    "os" 

    "gonum.org/v1/plot" 
    "gonum.org/v1/plot/plotter" 
    "gonum.org/v1/plot/vg" 
    "gonum.org/v1/plot/vg/draw" 
    "gonum.org/v1/plot/vg/vgimg" 
) 

func main() { 
    rand.Seed(int64(0)) 

    const rows, cols = 2, 1 
    plots := make([][]*plot.Plot, rows) 
    for j := 0; j < rows; j++ { 
     plots[j] = make([]*plot.Plot, cols) 
     for i := 0; i < cols; i++ { 

      p := randomLinePlot(rand.Intn(10)) 

      // make sure the horizontal scales match 
      p.X.Min = 0 
      p.X.Max = 5 

      plots[j][i] = p 
     } 
    } 

    img := vgimg.New(vg.Points(150), vg.Points(175)) 
    dc := draw.New(img) 

    t := draw.Tiles{ 
     Rows: rows, 
     Cols: cols, 
    } 

    canvases := plot.Align(plots, t, dc) 
    for j := 0; j < rows; j++ { 
     for i := 0; i < cols; i++ { 
      if plots[j][i] != nil { 
       plots[j][i].Draw(canvases[j][i]) 
      } 
     } 
    } 

    w, err := os.Create("aligned.png") 
    if err != nil { 
     panic(err) 
    } 

    png := vgimg.PngCanvas{Canvas: img} 
    if _, err := png.WriteTo(w); err != nil { 
     panic(err) 
    } 
} 

これは、単一のPNGファイルに次のプロットを生成します。

Two aligned plots in a single file

あなたはplot.Align

関連する問題