我试图创建一个图表,其 x 轴的对数刻度以 10 为底,范围从 1 到 1000。我似乎能够在设计时创建轴,但每当加载表单时,我都会收到一条错误消息,提示“图表面积轴 - 此轴不能使用对数刻度。
这是对 MSChart 控件的限制吗?为什么我无法在 X 轴上创建对数刻度?
这是因为对于对数刻度,值必须大于零。Charting.CHARt 将空图表视为由零组成(我知道这很奇怪)。此错误可能非常难以调试。因此,这意味着如果任何轴是对数刻度,则图形不能为空。我通常做的是将轴设置为线性并在图表上绘制后立即更改它(并检查对数刻度上没有零或负值)。另外,请记住在清除轴和绘图之前将轴更改为线性。希望这可以帮助某人。
我建议使用 SuppressExceptions 属性,该属性允许忽略一些异常,也就是与轴中的零点连接且具有对数刻度的异常。我认为这是针对这种情况的最佳解决方案,而不是操纵数据。
chart.SuppressExceptions = true;
这不仅关乎零,还关乎让您的值具有正确的数据类型。假设您正在使用数据表中的值填充图表。如果您没有指定类型,.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"))
在第一个示例中,将引发异常。在第二个它不会。
并非所有图表类型都支持对数刻度;尝试将图表类型更改为折线图。
图表类型: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