Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# FSharpChart:同一图形上的两个刻度_F#_Fsharpchart - Fatal编程技术网

F# FSharpChart:同一图形上的两个刻度

F# FSharpChart:同一图形上的两个刻度,f#,fsharpchart,F#,Fsharpchart,我用FSharpChart在同一张图上打印一只股票的移动平均数和成交量。问题是一个图形从20到50多多少少,另一个从0到80百万,所以当我结合这两个图形时,一个被拆分到底部,这是无用的。我可以在Y轴上有两个不同的刻度,以便两个图形正确地“合并”吗?据我所知,您不能图表。请将图表与独立的刻度组合起来。但是,您可以使用不同的组合符将它们彼此堆叠,例如使用Chart.Rows,如下面的代码片段所示 #I @"C:\code\packages\FSharp.Charting.0.90.12" #load

我用FSharpChart在同一张图上打印一只股票的移动平均数和成交量。问题是一个图形从20到50多多少少,另一个从0到80百万,所以当我结合这两个图形时,一个被拆分到底部,这是无用的。我可以在Y轴上有两个不同的刻度,以便两个图形正确地“合并”吗?

据我所知,您不能
图表。请将
图表与独立的刻度组合起来。但是,您可以使用不同的组合符将它们彼此堆叠,例如使用
Chart.Rows
,如下面的代码片段所示

#I @"C:\code\packages\FSharp.Charting.0.90.12"
#load "FSharp.Charting.fsx"

open FSharp.Charting
open System

let parabola = [ for x in 1.0 .. 1.0 .. 10.0 -> (x, (x ** 2.0) * 1000.0 ) ]
let curve = [ for i in 0.0 .. 0.02 .. 2.0 * Math.PI -> (sin i, cos i * sin i) ] 

Chart.Rows([Chart.Line(parabola); Chart.Line(curve)])
用不同比例的成分制作组合图表:


如果将其中一个系列的
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似乎存在一些缺陷,某些自定义设置具有“传染性”。创建“良好”图表后,即使在我不需要的情况下,次轴现在也会出现:

// 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]

我为这种奇怪的行为打开了一个bug: