2017-08-11 6 views
0

データベースにレコードがあり、プレビューできるグラフがあります。グラフはデータx電圧(ボルト)です。日付データチャートのX軸マークの制御c#

テーブルにレコードがほとんどない場合、グラフにはX軸の銀行に記録された日付が正確に表示されますが、レコードを追加すると、グラフが大きくなり、電圧の変化。

私は、チャートがどのようにの絵を入れています:このグラフは、異なる時間と電圧値との私の銀行から50件のエントリーを取っている

enter image description here

私は、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(); 

答えて

1

あなたはX軸にラベルスタイルを変更しようとしたことがありますか?

かなりの数のオプションがありますが、おそらく

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

のようなものは正しい方向にあなたを指すことができます。

+0

このように、チャートでは同じ数のエントリが表示されますが、時刻を表示する代わりに、その日の日付のみが表示されます。 –

+0

更新された回答は役に立ちますか? –

+0

完璧!それは働いた! –

関連する問題