我在删除x列中的额外值时遇到问题。基本上,我的图形不是从0开始,也不是在我的最后一个数据点结束。我尝试将轴启动为0,并将间隔偏移设置为-20(我的间隔为20)。
有什么方法可以摆脱我数据两边的额外值吗?
string[] xValues = new string[5] { "QE1", "QE2", "QE3", "QE4", $"{DateTime.Now.ToShortDateString()}" };
PlotBaselines(xValues);
var amCost = new Series()
{
Name = "AmCost",
Color = Color.Blue,
IsVisibleInLegend = true,
IsXValueIndexed = true,
ChartType = SeriesChartType.Line
};
impairmentGraph.Series.Add(amCost);
// Test Values 0 - 20
float[] amCostValues = new float[5] { 5, 15, 20, 13, 6 };
impairmentGraph.Series["AmCost"].Points.DataBindXY(xValues, amCostValues);
这是一个系列的代码。每个都是一样的。
impairmentGraph.ChartAreas[0].AxisY.Maximum = 100;
impairmentGraph.ChartAreas[0].AxisY.Interval = 20;
impairmentGraph.ChartAreas[0].AxisX.IntervalOffset = -20;
impairmentGraph.ChartAreas[0].AxisX.IsStartedFromZero = true;
这是我正在使用的唯一设置代码。
答案 0 :(得分:1)
您需要设置x轴的Minimum
和Maximum
。
但是:如果您将x值添加为数字(或日期时间),则仅可以工作!您的不是!
以下是有助于改变的更改:
将xvalues更改为数字:
double[] xValues = new double[5] { 1,2,3,4,5 };
将标签放在另一个数组中:
string[] xLabels = new string[5] { "QE1", "QE2", "QE3", "QE4",
$"{DateTime.Now.ToShortDateString()}" };
绑定数据后,您需要为AxisLabels
设置DataPoints
:
for (int i = 0; i < xValues.Length; i++)
impairmentGraph.Series["AmCost"].Points[i].AxisLabel = xLabels[i];
现在您可以设置x轴显示的范围:
impairmentGraph.ChartAreas[0].AxisX.Minimum = 1;
impairmentGraph.ChartAreas[0].AxisX.Maximum = 5;
根据我的数据,结果如下:
请注意,当您将x值添加为string
时,它们都会被转换到double
,从而导致值 0.0d <强>所有积分。 (请在调试器中进行检查!!)因此,您根本不能再使用它们任何;不是用于设置范围,也不是用于格式化标签或用于提供Tooltips
等等。
首先将字符串输入AxisLabels
的事实误导了许多人认为一切都很顺利,但不是......
另请注意,我总是选择List over arrays并且这个相当固定的数据集不会从数据绑定中获益,特别是因为我们无论如何都需要访问每个DataPoint
..