图表显示自定义标签上的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;

谢谢你的帮助。

谢谢。

图表显示自定义标签上的x-Axe自动标签

您误解了轴标签和标题之间的区别。你的代码很乱,所以我将一步一步来:首先绑定数据。

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
}