Teechart .Net - 气泡没有在图表上绘制某些值的问题

时间:2013-02-05 07:18:44

标签: .net teechart

我将带有泡泡系列的TeeChart绑定到数据源。数据源具有非常大的数据值。这是我用图表绑定图表的数据集。

Image 1 - Dataset Image

当我使用这些值绑定图表时,图表上不会绘制气泡。值得注意的是,当我将所有这些值除以100000然后绘制图表时,气泡就会被绘制出来。 值得观察的另一点是,如果我交换XValues和YValues,那么即使使用原始数据也可以绘制图表。我想绘制数据的原始值并获取Radius值和工具提示中的“Product_Desc”列。

Image 2 - Chart Image

另外,如何设置图例位置,使其不会滚动到2行。

此致

Nupur Modi

2 个答案:

答案 0 :(得分:1)

问题似乎在于规模。请注意,气泡系列被认为是绘制了关于轴尺度的半径。

你的XValues从239.560,5变为5.776.576,87。这是一个5.537.016,37范围。而且你的X轴长度为473像素。所以这意味着每2个X像素之间的增量为11.706,166。

您的YValues从67086938,62变为63.500.3298,6。这是567.916.359,98范围。并且您的Y轴长度为228像素。所以这意味着每2个Y像素之间的增量为2.490.861,228。

您的半径从39.728.41变为952.021,78。

这些半径大于X像素增量,所以它们没问题。

但是这些半径小于Y像素增量,所以很少说这些气泡的Y轴范围太小,无法表示。


我为您看到两个选项:

  1. 您可以将Radius值乘以100或更多。如果查看轴刻度,这将导致错误的气泡尺寸。但也许对你来说重要的是保持气泡之间的比例,而不是通过半径指示轴的值。

  2. 更改3D类型的系列类型。由于您要表示3个值,每个值都遵循相当不同的比例,因此使用3D3系列类型(如Points3D)可能更为逻辑。即:

        tChart1.Header.Visible = false;
    
        tChart1.Aspect.Chart3DPercent = 50;
        tChart1.Legend.Alignment = LegendAlignments.Top;
        tChart1.Legend.TextStyle = LegendTextStyles.Plain;
        tChart1.Axes.Depth.Visible = true;
        tChart1.Axes.Bottom.Title.Text = "XValues";
        tChart1.Axes.Left.Title.Text = "YValues";
        tChart1.Axes.Depth.Title.Text = "ZValues";
    
        Points3D points3D1 = new Points3D(tChart1.Chart);
        points3D1.ColorEach = true;
        points3D1.LinePen.Visible = false;
        points3D1.BaseLine.Visible = true;            
        points3D1.Add(544161.66, 114160840.39, 82491.58, "ComEd Commercial");
        points3D1.Add(239560.5, 67086938.62, 39728.41, "PECO Commercial");
        points3D1.Add(5776576.87, 635003298.6, 952021.78, "ComEd Residential");
        points3D1.Add(2657157.7, 552875694.07, 412903.38, "PECO Residential");
    
  3. Points3D series

答案 1 :(得分:0)

确保点“。”是你的DecimalSeparator

    System.Globalization.CultureInfo tmp_ci = (System.Globalization.CultureInfo)System.Globalization.CultureInfo.CurrentCulture.Clone();
    tmp_ci.NumberFormat.NumberDecimalSeparator = ".";
    System.Threading.Thread.CurrentThread.CurrentCulture = tmp_ci;

也许是“。”被视为NumberGroupSeparator,您正在设置一个轴范围超出值范围。