【问题标题】:Teechart .Net - Issue with bubbles not plotting on the chart for some valuesTechart .Net - 某些值的图表上没有绘制气泡的问题
【发布时间】:2013-02-05 07:18:44
【问题描述】:

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

Image 1 - Dataset Image

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

Image 2 - Chart Image

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

问候

努普尔·莫迪

【问题讨论】:

    标签: .net teechart


    【解决方案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)可能更符合逻辑。即:

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

    【讨论】:

    • @Yeray... 我明白你在说什么.. 有什么解决办法吗?
    • 我不明白与轴比例相比,半径非常小应该如何绘制任何东西。我理解这是正确的结果。您会期待什么,绘制的气泡大于其半径所指示的值?
    • 不。我没想到会这样,但不知何故,我需要将数据显示给我的最终客户端。您是否有任何其他工作可以通过我可以在单个图表中向用户显示所有这些数据?我的意思是可能是另一种类型的图表或类似的东西。
    【解决方案2】:

    确保点“。”是你的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,并且您正在设置超出值范围的轴比例。

    【讨论】:

    • 不@Yeray,这不是问题。我尝试添加您提到的代码,但仍然没有出现气泡。
    • 我想我找到了问题所在。让我再写一个答案
    猜你喜欢
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多