我正在尝试动态生成轴标签值,如下所示。
Dim dt As DataTable
dt = ds.Tables(0)
Dim y2max As Double = dt.Compute("max(return)", String.Empty) + 0.001
Dim y2min As Double = dt.Compute("min(return)", String.Empty) - 0.001
Dim ymax As Double = dt.Compute("max(TC_" & TC & ")", String.Empty) + 0.005
Dim ymin As Double = dt.Compute("min(TC_" & TC & ")", String.Empty) - 0.005
并生成以下图表。
http://i.imgur.com/LrfsvDT.png
我能够通过这种方法实现所需的缩放,但是我希望PRIMARY Y标签值具有" 1"。我可以设置适当的间隔或格式化Y标签值来实现此目的。 这是我希望实现的目标
http://i.imgur.com/HKCrLmw.png
我不关心间隔值/长度,但我需要我的蓝线系列以1开头。
答案 0 :(得分:0)
错误答案:我认为您正在寻找AxisY.IntervalOffset
属性。为什么会出错?因为它会改变标签。它恰好在我之前的尝试中看起来。
正确的答案:如果将AxisY.Crossing
属性设置为1,则会强制它使用1作为标签值,并适当地计算其他标签。然后,您需要设置AxisY.IsStartedFromZero = False
以避免零被包含在轴上,AxisX.IsMarksNextToAxis = False
以使x轴标签出现在图表的下边缘。
因此...
Sub GenerateChart()
Chart1.Legends.Clear()
Chart1.Series.Clear()
' generate some sample data
Dim s1 As New Series
For i = 0 To 180 Step 2
s1.Points.AddXY(i, Math.Sin(Math.PI * i / 60) * 0.004 + 1)
Next
Chart1.Series.Add(s1)
Chart1.Series(0).ChartType = SeriesChartType.Line
Chart1.Series(0).BorderWidth = 2
Chart1.ChartAreas(0).AxisY.IsStartedFromZero = False
Chart1.ChartAreas(0).AxisY.Crossing = 1
Chart1.ChartAreas(0).AxisX.IsMarksNextToAxis = False
' avoid the label "1.000" being formatted as "1"
Dim labelFormat = "0.000"
Chart1.ChartAreas(0).AxisY.LabelStyle = New LabelStyle With {.Format = labelFormat}
End Sub
给出