在Ms图表控件中使用对数刻度

时间:2013-03-05 07:39:04

标签: c# asp.net mschart

我试图创建一个图表,它具有x轴的基数10对数刻度,范围从1到1000.我似乎能够在设计时创建轴,但无论何时加载表单,我都会收到一条错误消息说“图表区域轴 - 对数刻度不能用于此轴。

这是对MSChart控件的限制吗?为什么我无法在X轴上创建对数刻度?

4 个答案:

答案 0 :(得分:3)

这是因为对于对数刻度,值必须大于零。 Charting.CHart将空图表视为由零组成(我知道它很奇怪)。调试此错误可能非常困难。因此,如果任何轴是对数标度,则表示图形不能为EMPTY。我通常做的是将轴设置为线性,并在绘制图形后立即更改它(并且在对数刻度上检查没有零或负值)。此外,请记住在清除轴和绘图之前将轴更改为线性。希望这有助于某人。

答案 1 :(得分:2)

我建议使用SuppressExceptions属性,该属性允许忽略一些异常,也就是那些用对数刻度在轴上用零连接的异常。我认为这是针对这种情况的最佳解决方案,而不是操纵数据。

chart.SuppressExceptions = true;

答案 2 :(得分:2)

它不仅仅是关于零,而且还有关于正确数据类型的值。假设您使用DataTable中的值填充图表。如果您还没有指定类型,.NET将自动假设它们是字符串,因此无法绘制对数刻度。

数据表的不完整规范:

        PP = New DataTable
        PP.Columns.Add("X-value")
        PP.Columns.Add("Y-value")

完整规范:

        PP = New DataTable
        PP.Columns.Add("X-value", Type.GetType("System.Double"))
        PP.Columns.Add("Y-value", Type.GetType("System.Double"))

在第一个示例中,将抛出异常。在第二场比赛中,它赢了。

答案 3 :(得分:0)

并非所有图表类型都支持对数刻度;尝试更改图表类型,例如到折线图。

图表类型:http://msdn.microsoft.com/en-us/library/dd489233.aspx

ChartType属性:http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.series.charttype.aspx