当值不同(非常高且非常低)时,如何在同一图表上看到我的图表上的2个系列

时间:2014-04-25 15:09:29

标签: c# .net winforms graph charts

我定义了代表我的TelerikNetwork Traffic rateMBit/sec)的2系列(我正在使用Packet/sec):

AreaSeries series;
AreaSeries series2;

series = new AreaSeries();
radChartView1.Series.Add(series);
series.BorderColor = Color.SteelBlue;
series.BackColor = Color.FromArgb(20, Color.SkyBlue);
series.BorderWidth = 1;
series.HorizontalAxis.ShowLabels = false;
series.VerticalAxis.ShowLabels = false;

series2 = new AreaSeries();
radChartView1.Series.Add(series2);
series2.BorderColor = Color.Gray;
series2.BackColor = Color.FromArgb(20, Color.Gray);
series2.BorderWidth = 1;
series2.HorizontalAxis.ShowLabels = false;
series2.VerticalAxis.ShowLabels = false;

我的图表通过计时器收到实时数据:

private void timerStatistics_Tick(object sender, EventArgs e)
{
    try
    {
        if (series.DataPoints.Count > 40)
            series.DataPoints.RemoveAt(0);
        series.DataPoints.Add(new Telerik.Charting.CategoricalDataPoint(AdapterStatistics.BitsPerSecond * 0.000001));

        if (series2.DataPoints.Count > 40)
            series2.DataPoints.RemoveAt(0);
        series2.DataPoints.Add(new Telerik.Charting.CategoricalDataPoint(AdapterStatistics.PacketsPerSecond));

    }
    catch (Exception)
    { }
} 

我的问题是,因为我的2个值非常不同,所以我只能看到我的一个系列(通常是Packet/sec),因为例如MBit/sec得到值1.4和Packet/sec得到值200因此从我的图表中我可以看到最大值,最低值是如此之小以至于无法看到(参见我在红色矩形内的截图,一条非常小的蓝线......):

image

如何解决?

1 个答案:

答案 0 :(得分:0)

不确定它如何应用于Telerik控制,但在常规图表控件中,您可以拥有2个x轴和2个y轴,并指定不同的系列以使用不同的轴。因此,您可以执行以下操作:

series.YAxisType = AxisType.Primary;
series2.YAxisType = AxisType.Secondary;
Axis yaxis1 = chart.ChartAreas[0].AxisY;
Axis yaxis2 = chart.ChartAreas[0].AxisY2;
yaxis1.Maximum = 1e6;
yaxis2.Maximum = 1e3;

使用Telerik控件看起来非常相似,直接来自Telerik网站(http://www.telerik.com/help/winforms/chartview-axes-multiple-axes.html):

LinearAxis verticalAxis1 = new LinearAxis();
verticalAxis1.AxisType = AxisType.Second;
LinearAxis verticalAxis2 = new LinearAxis();
verticalAxis2.AxisType = AxisType.Second;
verticalAxis2.HorizontalLocation = AxisHorizontalLocation.Right;

series.HorizontalAxis = horizontalAxis;
series.VerticalAxis = verticalAxis1;


series2.HorizontalAxis = horizontalAxis;
series2.VerticalAxis = verticalAxis2;