FSharpChart を使用して、移動平均と株の出来高を同じグラフィックに印刷しています。問題は、1 つのグラフィックが 20 から 50 に多かれ少なかれ、もう 1 つのグラフィックが 0 から 80 mln になることです。そのため、2 つを組み合わせると、1 つが下に分割され、これは役に立ちません。2 つのグラフィックが正しく「マージ」されるように、Y 軸に 2 つの異なるスケールを設定できますか?
質問する
223 次
2 に答える
5
AxisType
シリーズのいずれかの を に設定すると、これを行うことができますAxisType.Secondary
。もちろん、軸ラベル、凡例などで、どのデータがどのスケールにマップされているかを明確にするのはあなた次第です。
open FSharp.Charting
open System.Windows.Forms.DataVisualization.Charting
let squaresChart = [ 1 .. 100 ] |> List.map (fun n -> (n, n*n)) |> Chart.Line
let cubesChart = [ 1 .. 100 ] |> List.map (fun n -> (n, n*n*n)) |> Chart.Line
let bad =
[ squaresChart
cubesChart ]
|> Chart.Combine
let good =
[ squaresChart
cubesChart |> Chart.WithSeries.AxisType(YAxisType = AxisType.Secondary) ]
|> Chart.Combine
悪い:
良い:
これは機能しますが、この回答を書くために行った簡単なテストでは、FSharp.Charting にバグがあり、特定のカスタマイズが「伝染性」であるようです。「良い」チャートを作成した後、必要のない場合でも第 2 軸が表示されるようになりました。
// secondary axis sticks around
bad |> Chart.WithTitle(Text = "Why secondary axis?")
// now the title and the secondary axis *both* stick around!
Chart.Rows [bad; good]
于 2015-07-09T17:10:16.623 に答える