2013-04-18 5 views

Répondre

0

Vous pouvez avoir plusieurs BoxSeries, quelque chose comme l'exemple ici: http://www.teechart.net/support/viewtopic.php?f=3&t=13048&hilit=boxplot

Il est un exemple Delphi, mais il ne devrait pas être très différent dans ActiveX.


MISE À JOUR:

De vos commentaires, je comprends que vous voulez avoir des boîtes dans différentes positions X, et probablement en groupes. Ici, il est un exemple simple de la façon dont vous pourriez jouer avec les positions pour obtenir le même:

Dim nSeries, groupSize As Integer 
Private Sub Form_Load() 
    Dim i, aIndex, sIndex, lIndex, tmpX As Integer 

    TeeCommander1.ChartLink = TChart1.ChartLink 
    'TChart1.Header.Text.Text = TChart1.Version 

    TChart1.Aspect.View3D = False 
    TChart1.Panel.MarginTop = 7 
    TChart1.Header.Visible = False 
    TChart1.Axis.Bottom.Ticks.Visible = False 
    TChart1.Axis.Bottom.MinorTicks.Visible = False 

    nSeries = 8 
    groupSize = 2 

    aIndex = TChart1.Tools.Add(tcAnnotate) 
    TChart1.Tools.Items(aIndex).asAnnotation.Text = "group 1" 

    tmpX = 0 
    For i = 0 To nSeries - 1 
    sIndex = TChart1.AddSeries(scBox) 
    TChart1.series(sIndex).FillSampleValues 
    TChart1.series(sIndex).asBoxPlot.Position = tmpX 

    If (i + 1) Mod groupSize Then 
     tmpX = tmpX + 1 
    Else 
     If i + 1 < nSeries - 1 Then 
     lIndex = TChart1.Tools.Add(tcColorLine) 
     TChart1.Tools.Items(lIndex).asColorLine.Axis = TChart1.Axis.Bottom 
     TChart1.Tools.Items(lIndex).asColorLine.Value = tmpX + 1 
     tmpX = tmpX + 2 

     aIndex = TChart1.Tools.Add(tcAnnotate) 
     TChart1.Tools.Items(aIndex).asAnnotation.Text = "group " + Str$(((i + 1)/groupSize) + 1) 
     End If 
    End If 
    Next i 

    TChart1.Environment.InternalRepaint 
End Sub 

Private Sub TChart1_OnAfterDraw() 
    Dim tmpX As Integer 
    For i = 0 To TChart1.Tools.Count - 1 
    If TChart1.Tools.Items(i).ToolType = tcAnnotate Then 
     With TChart1.Tools.Items(i).asAnnotation 
     If i = TChart1.Tools.Count - 1 Then 
      tmpX = TChart1.GetChartRect.Right 
     Else 
      tmpX = TChart1.Axis.Bottom.CalcXPosValue(TChart1.Tools.Items(i + 1).asColorLine.Value) 
     End If 

     If i = 0 Then 
      tmpX = TChart1.GetChartRect.Left + (tmpX - TChart1.GetChartRect.Left)/2 
     Else 
      tmpX = TChart1.Axis.Bottom.CalcXPosValue(TChart1.Tools.Items(i - 1).asColorLine.Value) + (tmpX - TChart1.Axis.Bottom.CalcXPosValue(TChart1.Tools.Items(i - 1).asColorLine.Value))/2 
     End If 

     .Left = tmpX - .Width/2 
     End With 
    End If 
    Next i 
End Sub 

Private Sub TChart1_OnGetAxisLabel(ByVal Axis As Long, ByVal SeriesIndex As Long, ByVal ValueIndex As Long, LabelText As String) 
    If Axis = 3 Then 
    LabelText = " " 
    End If 
End Sub 

enter image description here

+0

Salut, Je cherche quelque chose comme [how-to-terrain-multiple-box-plots- dans-un-intrigue] (http://stackoverflow.com/questions/12427887/how-to-plot-multiple-box-plots-in-one-plot) –

+0

Avez-vous essayé le mentionné? Vous devez juste ajouter plusieurs BoxSeries. Et certaines valeurs à chacun, bien sûr. – Yeray

+0

Ouais j'ai essayé ceci en faisant ceci nous pouvons ajouter le complot en position X multiple que je regarde est dessiner le sidebyside de parcelle de boîte sur une position simple sur X-axe, semblable au graphique à barres nous pouvons montrer des barres côte à côte pour plusieurs séries. –

Questions connexes