Menu

Multiple Lines Plot

gw1500se
2014-08-21
2014-08-21
  • gw1500se

    gw1500se - 2014-08-21

    I have a normal distribution curve working and I need to draw an additional vertical line. I don't understand how to do that from the documentation. Essentially the curve should look like a normal bell curve but with a vertical line at a certain x coordinate. I tried adding an additional point at the beginning of the array with a 3nd y value but instead of getting a vertical line I get a diagonal line. The array looks like this:

    Array
    (
    [0] => Array
    (
    [0] =>
    [1] => -0.47307619701701
    [2] => 1.594336333586
    [3] => 0
    )

    [1] => Array
        (
            [0] => 
            [1] => 1.6769216411499
            [2] => 0.43706428329849
        )
    
    [2] => Array
        (
            [0] => 
            [1] => 1.5982389824624
            [2] => 0.49716872648572
        )
    
    [3] => Array
        (
            [0] => 
            [1] => 1.3423281493673
            [2] => 0.72428933797103
        )
    
    [4] => Array
        (
            [0] => 
            [1] => 1.2682759857038
            [2] => 0.79779477721734
        )
    
    [5] => Array
        (
            [0] => 
            [1] => 1.2151415022639
            [2] => 0.85220656588312
        )
    
    [6] => Array
        (
            [0] => 
            [1] => 0.88364096661696
            [2] => 1.2067700653333
        )
    
    [7] => Array
        (
            [0] => 
            [1] => 0.75232441854629
            [2] => 1.343612774763
        )
    
    [8] => Array
        (
            [0] => 
            [1] => 0.65068594669036
            [2] => 1.4429101349822
        )
    
    [9] => Array
        (
            [0] => 
            [1] => 0.62976826646671
            [2] => 1.4623636532324
        )
    
    [10] => Array
        (
            [0] => 
            [1] => 0.52707497142001
            [2] => 1.5518598101884
        )
    
    [11] => Array
        (
            [0] => 
            [1] => 0.52605590494758
            [2] => 1.552692769672
        )
    
    [12] => Array
        (
            [0] => 
            [1] => 0.42389896067585
            [2] => 1.629890667657
        )
    
    [13] => Array
        (
            [0] => 
            [1] => 0.42030541048358
            [2] => 1.6323648357936
        )
    
    [14] => Array
        (
            [0] => 
            [1] => 0.3983686637875
            [2] => 1.6470887009206
        )
    
    [15] => Array
        (
            [0] => 
            [1] => 0.29569324709997
            [2] => 1.706835128731
        )
    
    [16] => Array
        (
            [0] => 
            [1] => 0.26656940001935
            [2] => 1.7208674230535
        )
    
    [17] => Array
        (
            [0] => 
            [1] => 0.24255876366007
            [2] => 1.7314179983936
        )
    
    [18] => Array
        (
            [0] => 
            [1] => 0.24152181882847
            [2] => 1.731852608426
        )
    
    [19] => Array
        (
            [0] => 
            [1] => 0.091879952613142
            [2] => 1.775597771835
        )
    
    [20] => Array
        (
            [0] => 
            [1] => 0.089841819668272
            [2] => 1.7759266191361
        )
    
    [21] => Array
        (
            [0] => 
            [1] => 0.01577177764556
            [2] => 1.7828865844401
        )
    
    [22] => Array
        (
            [0] => 
            [1] => -0.015408080739089
            [2] => 1.7828966934517
        )
    
    [23] => Array
        (
            [0] => 
            [1] => -0.11552689206595
            [2] => 1.7712488637879
        )
    
    [24] => Array
        (
            [0] => 
            [1] => -0.24169447269697
            [2] => 1.7317803664268
        )
    
    [25] => Array
        (
            [0] => 
            [1] => -0.39798708852186
            [2] => 1.6473389700723
        )
    
    [26] => Array
        (
            [0] => 
            [1] => -0.47307619701701
            [2] => 1.594336333586
        )
    
    [27] => Array
        (
            [0] => 
            [1] => -0.57728915259278
            [2] => 1.5094218837776
        )
    
    [28] => Array
        (
            [0] => 
            [1] => -0.80613214991132
            [2] => 1.288441798832
        )
    
    [29] => Array
        (
            [0] => 
            [1] => -0.95119715618027
            [2] => 1.1342482389857
        )
    
    [30] => Array
        (
            [0] => 
            [1] => -1.0063518942059
            [2] => 1.0746403360234
        )
    
    [31] => Array
        (
            [0] => 
            [1] => -1.1105648497816
            [2] => 0.96240584513436
        )
    
    [32] => Array
        (
            [0] => 
            [1] => -1.6928808861615
            [2] => 0.42546833782801
        )
    
    [33] => Array
        (
            [0] => 
            [1] => -1.8313487778984
            [2] => 0.33335040625594
        )
    
    [34] => Array
        (
            [0] => 
            [1] => -2.1275931892709
            [2] => 0.18545031294224
        )
    
    [35] => Array
        (
            [0] => 
            [1] => -2.2098157630731
            [2] => 0.15516212337762
        )
    

    )

     
  • gw1500se

    gw1500se - 2014-08-21

    I made it look like I wanted using brute force. I added points to the array to bring it down to 0 then back to the previous point. Unfortunately that means it is not a separate line so I cannot control the color.

     
  • lbayuk

    lbayuk - 2014-08-21

    Think of the data array as having each row in the form: (Label, X, Y1, Y2, Y3, ...) where each Y is for a separate line in a multi-line plot. All Yi share the same X. That is the basic idea for multi-line plots using 'data-data' data type.

    Second, consider that you can omit any Yi (replace it with an empty string) to have PHPlot skip that point on that line.

    Taken together, this means if you just want to add a line segment to your data set, you do not have to change the rows you already have. Just append (or pre-pend) 2 more rows to the data array, something like this:

    $data[] = array('', 2, '', 0);
    $data[] = array('', 2, '', 100);
    

    This would produce a 2nd line, using the next color, from (2,0) to (2,100). These aren't the right numbers for your data set, but you get the idea.

     
  • gw1500se

    gw1500se - 2014-08-21

    I must be doing something wrong. I prepended as you suggested but I do not get the vertical line. This is my data now:

    Array
    (
    [0] => Array
    (
    [0] =>
    [1] => -0.47307619701701
    [2] =>
    [3] => 0
    )

    [1] => Array
        (
            [0] => 
            [1] => -0.47307619701701
            [2] => 
            [3] => 0.01594336333586
        )
    
    [2] => Array
        (
            [0] => 
            [1] => 1.6769216411499
            [2] => 0.43706428329849
        )
    
    [3] => Array
        (
            [0] => 
            [1] => 1.5982389824624
            [2] => 0.49716872648572
        )
    
    [4] => Array
        (
            [0] => 
            [1] => 1.3423281493673
            [2] => 0.72428933797103
        )
    
    [5] => Array
        (
            [0] => 
            [1] => 1.2682759857038
            [2] => 0.79779477721734
        )
    
    [6] => Array
        (
            [0] => 
            [1] => 1.2151415022639
            [2] => 0.85220656588312
        )
    
    [7] => Array
        (
            [0] => 
            [1] => 0.88364096661696
            [2] => 1.2067700653333
        )
    
    [8] => Array
        (
            [0] => 
            [1] => 0.75232441854629
            [2] => 1.343612774763
        )
    
    [9] => Array
        (
            [0] => 
            [1] => 0.65068594669036
            [2] => 1.4429101349822
        )
    
    [10] => Array
        (
            [0] => 
            [1] => 0.62976826646671
            [2] => 1.4623636532324
        )
    
    [11] => Array
        (
            [0] => 
            [1] => 0.52707497142001
            [2] => 1.5518598101884
        )
    
    [12] => Array
        (
            [0] => 
            [1] => 0.52605590494758
            [2] => 1.552692769672
        )
    
    [13] => Array
        (
            [0] => 
            [1] => 0.42389896067585
            [2] => 1.629890667657
        )
    
    [14] => Array
        (
            [0] => 
            [1] => 0.42030541048358
            [2] => 1.6323648357936
        )
    
    [15] => Array
        (
            [0] => 
            [1] => 0.3983686637875
            [2] => 1.6470887009206
        )
    
    [16] => Array
        (
            [0] => 
            [1] => 0.29569324709997
            [2] => 1.706835128731
        )
    
    [17] => Array
        (
            [0] => 
            [1] => 0.26656940001935
            [2] => 1.7208674230535
        )
    
    [18] => Array
        (
            [0] => 
            [1] => 0.24255876366007
            [2] => 1.7314179983936
        )
    
    [19] => Array
        (
            [0] => 
            [1] => 0.24152181882847
            [2] => 1.731852608426
        )
    
    [20] => Array
        (
            [0] => 
            [1] => 0.091879952613142
            [2] => 1.775597771835
        )
    
    [21] => Array
        (
            [0] => 
            [1] => 0.089841819668272
            [2] => 1.7759266191361
        )
    
    [22] => Array
        (
            [0] => 
            [1] => 0.01577177764556
            [2] => 1.7828865844401
        )
    
    [23] => Array
        (
            [0] => 
            [1] => -0.015408080739089
            [2] => 1.7828966934517
        )
    
    [24] => Array
        (
            [0] => 
            [1] => -0.11552689206595
            [2] => 1.7712488637879
        )
    
    [25] => Array
        (
            [0] => 
            [1] => -0.24169447269697
            [2] => 1.7317803664268
        )
    
    [26] => Array
        (
            [0] => 
            [1] => -0.39798708852186
            [2] => 1.6473389700723
        )
    
    [27] => Array
        (
            [0] => 
            [1] => -0.47307619701701
            [2] => 1.594336333586
        )
    
    [28] => Array
        (
            [0] => 
            [1] => -0.57728915259278
            [2] => 1.5094218837776
        )
    
    [29] => Array
        (
            [0] => 
            [1] => -0.80613214991132
            [2] => 1.288441798832
        )
    
    [30] => Array
        (
            [0] => 
            [1] => -0.95119715618027
            [2] => 1.1342482389857
        )
    
    [31] => Array
        (
            [0] => 
            [1] => -1.0063518942059
            [2] => 1.0746403360234
        )
    
    [32] => Array
        (
            [0] => 
            [1] => -1.1105648497816
            [2] => 0.96240584513436
        )
    
    [33] => Array
        (
            [0] => 
            [1] => -1.6928808861615
            [2] => 0.42546833782801
        )
    
    [34] => Array
        (
            [0] => 
            [1] => -1.8313487778984
            [2] => 0.33335040625594
        )
    
    [35] => Array
        (
            [0] => 
            [1] => -2.1275931892709
            [2] => 0.18545031294224
        )
    
    [36] => Array
        (
            [0] => 
            [1] => -2.2098157630731
            [2] => 0.15516212337762
        )
    

    )

     
  • lbayuk

    lbayuk - 2014-08-21

    It is drawing a vertical line for me (in green), but it only goes from Y=0 to Y=0.0159 so it is a very very short line. Your other Y values are much larger. Are you sure those are the right numbers (especially data[1][3])?

     
  • gw1500se

    gw1500se - 2014-08-21

    Ah! Sorry, I forgot to normalize that number. Thanks.

    P.S. Can you take a look at (no subject) if you get a chance?

     
  • lbayuk

    lbayuk - 2014-08-21

    Re: no subject - yes, soon (I took this easier one first)

     
  • gw1500se

    gw1500se - 2014-08-21

    Uh oh! That means the other is harder.

     

Log in to post a comment.