【问题标题】:Controlling X-Axis Marks on Date Data Charts c#控制日期数据图表上的 X 轴标记 c#
【发布时间】:2017-08-12 14:50:29
【问题描述】:

我在数据库中有记录和可以预览它们的图表。该图是数据 x 电压(以伏特为单位)。

当表格中的记录很少时,图表会在 X 轴上准确显示银行中记录的日期,但随着时间的推移,我添加了更多记录,图表会增长并停止标记所有发生变化的日期记录电压。

我正在放一张图表的图片:

此图表从我的银行中获取了 50 个具有不同时间和电压值的条目。

我想要一种方法来改进并能够更好地控制 X 轴点,例如让它们每 10 分钟出现一次。

下面是生成图形的代码:

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringSQL"].ConnectionString);
    con.Open();
    SqlCommand cmd = new SqlCommand("SELECT Log.ValorEntrada, Log.DataHoraEvento, Log.NumeroEntrada FROM Log INNER JOIN Equipamento ON Log.IDEquipamento = Equipamento.IDEquipamento INNER JOIN EntradaEstado ON Equipamento.IDEquipamento = EntradaEstado.IDEquipamento INNER JOIN Entrada ON EntradaEstado.IDEntrada = Entrada.IDEntrada WHERE Log.NumeroEntrada = N'" + descricao.SelectedItem.Value + "' AND Log.ValorEntrada IS NOT NULL AND DATEDIFF(day, Log.DataHoraEvento, GETDATE()) = 1 AND EntradaEstado.IDEquipamento = N'" + equip.Text + "' AND Entrada.Descricao = N'" + descricao.SelectedItem.Text + "' ORDER BY DataHoraEvento ASC");
    cmd.Connection = con;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        Chart2.DataSource = dt;

        if (descricao.SelectedItem.Text == "Corrente da bomba de graxa")
        {
            Chart2.ChartAreas["ChartArea1"].AxisY.Title = "Corrente (A)";
        }
        else
        {

            Chart2.ChartAreas["ChartArea1"].AxisY.Title = "Tensão (V)";
        }

        Title title = Chart2.Titles.Add("Gráfico do dia: " + DateTime.Now.AddDays(-1).ToString("dd/MM/yyyy"));
        title.ForeColor = System.Drawing.Color.DarkBlue;
        title.Font = new System.Drawing.Font("Arial", 12, System.Drawing.FontStyle.Bold);




        Chart2.ChartAreas["ChartArea1"].AxisX.Title = "Hora";
        Chart2.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "HH:mm:ss";
        Chart2.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineColor = System.Drawing.Color.DarkGray;
        Chart2.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dot;
        Chart2.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineColor = System.Drawing.Color.DarkGray;
        Chart2.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot;


        Chart2.Series["Series1"].XValueType = ChartValueType.DateTime;
        Chart2.Series["Series1"].BorderWidth = 2;
        Chart2.Series["Series1"].XValueMember = "DataHoraEvento";
        Chart2.Series["Series1"].YValueMembers = "ValorEntrada";
        Chart2.Series["Series1"].IsXValueIndexed = true;

        Chart2.Width = 1200;
        Chart2.Height = 400;

        Chart2.DataBind();
        con.Close();

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您是否尝试过更改 X 轴上的标签样式?

    有很多选择,也许像

    Chart2.ChartAreas["ChartArea1"].AxisX.IsLabelAutoFit = false;
    Chart2.ChartAreas["ChartArea1"].AxisX.LabelStyle = new LabelStyle() { IntervalType = DateTimeIntervalType.Minutes, Interval = 10, Format = "HH:mm:ss"};
    

    可以为您指明正确的方向。

    【讨论】:

    • 这样图表会继续显示相同数量的条目,但现在不再显示时间,而是仅显示当天的日期。
    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 2021-02-27
    • 1970-01-01
    • 2012-09-23
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多