图表显示自定义标签上的x-Axe自动标签
本文关键字:标签 x-Axe 显示 自定义 | 更新日期: 2023-09-27 18:17:10
我的图表出了点问题。我正在创建带有数值的图表(x轴表示时间,y轴表示速度)我在一张图表上有3个级数图。https://www.dropbox.com/s/vy6lw1b0lj2ql96/graph1.jpg
正如您在X-Axe上看到的,除了我唯一创建的客户标签外,我没有看到任何带值的标签。我想做的是将我的客户标签与每个系列图形的相关X值添加到具有预定义间隔的现有自动值,因此当我添加以下行时:timeChart.ChartAreas .AxisX.CustomLabels"ChartArea1"。添加(1,1.5,"test");所有其他自动生成的标签都消失了。
当我删除提到的行,然后我可以看到我的图表的默认值:https://www.dropbox.com/s/5u2v8b60pgup4wd/graph2.JPG
我读了很多论坛,但没有找到适合我的解决方案。在每个论坛-解决方案是配置以下行不适合我:timeChart.ChartAreas .AxisX"ChartArea1"。区间= 1;我试着在图表属性中改变了很多东西,但它仍然没有像预期的那样工作。
我附上代码:
timeChart.ChartAreas["ChartArea1"].AxisX.Interval = 1;
timeChart.ChartAreas["ChartArea1"].AxisX.Minimum = 0;
timeChart.ChartAreas["ChartArea1"].AxisX.Maximum = m_totalTime + 1;
// timeChart.ChartAreas["ChartArea1"].AxisY.Interval = 1;
timeChart.ChartAreas["ChartArea1"].AxisY.Minimum = 0;
timeChart.ChartAreas["ChartArea1"].AxisY.Maximum = m_maxVelocity + 1;
timeChart.Titles["mainTitle"].Visible = true;
timeChart.Legends["Legend1"].Enabled = true;
distanceChart.Legends["Legend1"].Enabled = true;
distanceChart.Titles["mainTitle"].Visible = true;
//timeChart.Series["Time Chart A"].IsXValueIndexed = true;
//timeChart.Series["Time Chart B"].IsXValueIndexed = true;
//timeChart.Series["Time Chart C"].IsXValueIndexed = true;
timeChart.Series["Time Chart A"].Points.AddXY(0, 0);
timeChart.Series["Time Chart A"].Points.AddXY(m_nodeAT1Time, m_maxVelocity);
timeChart.Series["Time Chart A"].Points.AddXY(m_nodeAT1Time + m_nodeAT2Time, m_maxVelocity);
timeChart.Series["Time Chart A"].Points.AddXY(m_totalTime, 0);
timeChart.ChartAreas["ChartArea1"].AxisX.CustomLabels.Add(1, 1.5, "test");
// timeChart.ChartAreas["ChartArea1"].AxisY.Interval = 1;
timeChart.ChartAreas["ChartArea1"].AxisX.Interval = 1;
timeChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Interval = 1;
//timeChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = true;
timeChart.Series["Time Chart B"].Points.AddXY(0, 0);
timeChart.Series["Time Chart B"].Points.AddXY(m_nodeBT1Time, m_nodeBVelocity);
timeChart.Series["Time Chart B"].Points.AddXY(m_nodeBT1Time + m_nodeBT2Time, m_nodeBVelocity);
timeChart.Series["Time Chart B"].Points.AddXY(m_totalTime, 0);
timeChart.Series["Time Chart C"].Points.AddXY(0, 0);
timeChart.Series["Time Chart C"].Points.AddXY(m_nodeCT1Time, m_nodeCVelocity);
timeChart.Series["Time Chart C"].Points.AddXY(m_nodeCT1Time + m_nodeCT2Time, m_nodeCVelocity);
timeChart.Series["Time Chart C"].Points.AddXY(m_totalTime, 0);
timeChart.ChartAreas["ChartArea1"].AxisX.IsMarginVisible = true;
timeChart.ChartAreas["ChartArea1"].AxisX.Interval = 1;
谢谢你的帮助。
谢谢。
您误解了轴标签和标题之间的区别。你的代码很乱,所以我将一步一步来:首先绑定数据。
timeChart.Series["Time Chart A"].Points.AddXY(0, 0);
//...
timeChart.Series["Time Chart C"].Points.AddXY(m_totalTime, 0);
然后设置坐标轴的标题
timeChart.AxisY.Title = "Times(s)";
timeChart.AxisX.Title = "Speed (m/s)";
这应该可以工作。但是,您可能希望强制图表在坐标轴
上具有一定的间隔。timeChart.ChartAreas["ChartArea1"].AxisX.Interval = 1;
timeChart.ChartAreas["ChartArea1"].AxisY.Interval = 1;
或者最小值之类的。图表应该以这种方式获取数据,用它们创建轴标签并以正确的方式显示它们。
告诉图表你要输入的数据类型也是很有用的
foreach(Series s in timeChart.Series)
{
s.XAxisType = AxisType.Double; //autocomplete should help you there, I can't remember the correct object
}