【发布时间】:2016-06-03 12:02:16
【问题描述】:
我目前遇到了 MSChart 的问题,尤其是。条形图。该图表旨在导出并保存到图像文件中,并且要显示大量单独的条形图,因此高度为 38960 像素。
问题:似乎轴标签的高度是按百分比计算的,最小值为 1(之后再次最小值为 10px)。这样标签距离图表大约 390px ...
为了说明这个问题,我设置了 AxisX.Crossing = 0,所以轴应该画在图表上边界的正下方(绿线)。实际位置标记为红色。
(因为我不能发布超过2个链接,我必须删除原始图像)
如果能帮助我解决或解决此问题,我将不胜感激。
编辑:可以在此处找到演示问题/问题的简单项目:https://www.dropbox.com/s/fgyxnf4dh9v36ny/HugeMSChart.zip?dl=1
基本上:固定图表。我增加了图表的高度以进行演示。喜欢:
// Increase height
chart1.Height += 100;
// Calculate percentual value for the inner plot position for 50px (absolute)
chart1.ChartAreas[0].InnerPlotPosition.Y = (float)((double)5000 / chart1.Height);
chart1.ChartAreas[0].InnerPlotPosition.Height = 100 - 2 * chart1.ChartAreas[0].InnerPlotPosition.Y;
编辑 2:如 cmets 中所述,上图并非来自示例项目。尽管如此,问题仍然存在,如新图像所示。 左图显示了一个小图表,其中轴的标签位于顶部的右侧(到顶部的距离标记为绿色)。 右图显示了相同的图表,但高度约为 30.000 像素。如您所见,轴的标签错位了,因为到顶部的距离似乎与图表高度成比例。
编辑 3: 不幸的是,我不得不承认之前的 MCVE 无法涵盖整个问题(我是这么认为的,但我错了......抱歉)。迄今为止提出的解决方案适用于大型图表,但仅限于有限数量的数据点。当增加数据点的数量时,轴和标签之间的边距仍然可见(即使 IsMarginVisible = false)。
可以在此处找到更新的 MCVE(只需执行并向下滚动到最底部):https://dl.dropboxusercontent.com/u/24263856/HugeMSChart2.zip
至于旧的解决方案:当轴的交叉值上方和下方至少有一个数据点时,似乎不应用边距。但是,当这将轴(和标签)移动到图表中时,这并不是真正的解决方案。
【问题讨论】:
-
@DanielT,你是想说 0.4KB 的勾号应该是你指示绿线的地方吗?
-
您的 x 值是数字吗? (使用调试器进行测试!)值是如何添加的? - 顺便说一句:Winforms 控件的内部大小限制为 32k 像素,所以看到这么大的图表出现问题我不会感到惊讶..
-
@jstreet:上传了一个示例项目。
-
@Baddack:不,不是滴答声。这是关于轴的整个标签(0.4KB ... 0.6KB .. [等等])。它应该位于固定的 y 位置。
-
你是对的!哇,总有一些关于图表的新知识:-)
标签: .net charts bar-chart mschart