图表显示带有自动标签的x轴上的自定义标签

时间:2014-08-09 13:33:51

标签: c# charts

我的图表有问题。 我用数值创建图表(时间为X轴,速度为Y轴) 我在一张图表上有3个系列图。 https://www.dropbox.com/s/vy6lw1b0lj2ql96/graph1.jpg

正如您在X-Ax上看到的那样,除了我唯一创建的客户标签之外,我没有看到任何带有值的标签。 我想要做的是将每个系列图的相关X值的客户标签添加到具有预定义间隔的现有自动值,因此当我添加以下行时: timeChart.ChartAreas [" ChartArea1"]。AxisX.CustomLabels.Add(1,1.5," test"); 剩下的所有自动生成的标签都消失了。

当我删除提到的行时,我可以看到我的图表的默认值: https://www.dropbox.com/s/5u2v8b60pgup4wd/graph2.JPG

我阅读了很多论坛,但没有为我找到合适的解决方案。 在每个论坛上 - 解决方案是配置以下对我不起作用的行: timeChart.ChartAreas [" ChartArea1"]。AxisX.Interval = 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;

感谢您的协助。

谢谢。

1 个答案:

答案 0 :(得分:0)

你误解了轴标签和标题之间的区别。你的代码非常混乱,所以我将按步骤移动:首先绑定数据。

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
}
相关问题