0

我将带有 Bubble Series 的 TeeChart 绑定到数据源。数据源具有非常大的数据值。这是我绑定图表的数据集。

图 1 - 数据集图像

当我将图表与这些值绑定时,图表上不会绘制任何气泡。一个有趣的现象是,当我将所有这些值除以 100000 然后绘制图表时,确实会绘制气泡。值得观察的另一点是,如果我交换 XValues 和 YValues,那么即使使用原始数据也会绘制图表。我想绘制数据的原始值并获取工具提示中的半径值和“Product_Desc”列。

图 2 - 图表图像

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

问候

努普尔莫迪

4

2 回答 2

1

问题似乎出在天平上。请注意,气泡系列被认为是根据轴比例绘制半径。

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

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

你的半径从 39.728.41 到 952.021,78。

这些半径大于 X 像素增量,因此可以。

但是这些半径小于 Y 像素增量,所以简而言之,这些气泡的半径对于它们所代表的 Y 轴范围来说太小了。


我看到你有两个选择:

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

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

        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");
    

Points3D 系列

于 2013-02-06T09:42:35.607 回答
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并且您正在设置超出值范围的轴比例。

于 2013-02-05T10:54:53.837 回答