.Net 图表对数轴缩放,意外缩放问题

.Net Chart Logarithmic Axis Scaling, unexpected scaling issues

我有一个具有对数缩放 x 轴和 y 轴的示例图表,

好的,现在如果我将最小 X 值设置为 48,我会得到

这太难读了,我更喜欢保留 1、10、100、以 10 为底的对数刻度,但如果有意义的话,从根本上改变起点,这样上图看起来更像。 ...

(假设那张照片中有一个 Y 轴)

几个我试过的例子,

最终结果将是这样的图表....

随着值的更新,左侧的垂直线的位置也会更新,但我希望它保持在一个恒定的位置,并且图像基本上会移动以适应

关于图表区域和轴,我已经查看了每个 属性,但我似乎找不到方法来做到这一点。

间隔偏移量在相当 non-intuitive 范围内工作,而您在上述实例中的对数缩放将间隔偏移量设置为

间隔偏移 = Math.log(100) - Math.log(48) 达到预期的结果

我发现 Math.Log10 需要计算 IntervalOffset 属性。 您可以计算这些(包括 MinorGrid 的偏移量,而不是硬编码一整套数字,这些数字都取决于起始数字,如果您想要在 chartMin 和下一个顺序 10)。因此,假设一个名为 chartChart 对象,您需要(在 C# 中):

int chartMin = 48;
double logMin = Math.Log10 (chartMin);
chart.ChartAreas[0].AxisX.Minimum = chartMin;
chart.ChartAreas[0].AxisX.IntervalOffset = Math.Ceiling (logMin) - logMin;
chart.ChartAreas[0].AxisX.MinorGrid.Interval = 1;
chart.ChartAreas[0].AxisX.MinorGrid.IntervalOffset = Math.Floor (logMin) - logMin;

And the resulting X-axis looks like this