[英]chart X axis shifting
我在嘗試使用x軸移動創建ac#圖表時遇到了麻煩。
我想要的是添加一個新的Y值,讓x軸向左移動,刪除第一個數據點。
我可以在右手邊添加點數,
DataPoint dp2 = new DataPoint(x, rnd.Next(100));
chart1.Series[0].Points.Add(dp2);
x++;
我可以刪除左側的第一個點
chart1.Series[0].Points.RemoveAt(0);
但如果我嘗試兩者都不起作用,它會在圖表的開頭添加空格並從右側移出而不是留在圖形區域內?
DataPoint dp2 = new DataPoint(x, rnd.Next(100));
chart1.Series[0].Points.RemoveAt(0);
chart1.Series[0].Points.Add(dp2);
x++;
我的問題的完整演示: - (制作圖表,3個按鈕和3個計時器,將我的代碼粘貼到form1.cs的頂部,然后將按鈕(鼠標單擊)和計時器(刻度1000ms)事件連接到我的代碼事件處理程序。)
using System;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace test_chart2
{
public partial class Form1 : Form
{
double x = 16;
Random rnd = new Random();
public Form1()
{
InitializeComponent();
DrawToGraph1();
}
private void DrawToGraph1()
{
chart1.Series[0].Points.Clear();
for (int g = 5; g <= 15; g++)
{
DataPoint dp = new DataPoint(g, rnd.Next(100));
chart1.Series[0].Points.Add(dp);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
DataPoint dp2 = new DataPoint(x, rnd.Next(100));
chart1.Series[0].Points.Add(dp2);
x++;
}
private void timer2_Tick(object sender, EventArgs e)
{
chart1.Series[0].Points.RemoveAt(0);
}
private void timer3_Tick(object sender, EventArgs e)
{
DataPoint dp2 = new DataPoint(x, rnd.Next(100));
chart1.Series[0].Points.RemoveAt(0);
chart1.Series[0].Points.Add(dp2);
x++;
}
private void button2_MouseClick(object sender, MouseEventArgs e)
{
timer1.Enabled = false;
timer2.Enabled = true;
timer3.Enabled = false;
}
private void button3_MouseClick(object sender, MouseEventArgs e)
{
timer1.Enabled = false;
timer2.Enabled = false;
timer3.Enabled = true;
}
private void button1_MouseClick(object sender, MouseEventArgs e)
{
timer1.Enabled = true;
timer2.Enabled = false;
timer3.Enabled = false;
}
}
}
如果我使用它確實有效
series1.IsXValueIndexed = true;
但我不能使用這個,因為我的項目有一個時間X軸,當我使用這個選項它不會產生一個很好的時間線(軸標簽沒有像往常一樣四舍五入到最接近的小時),它也會導致對齊問題我的輔助X軸,顯示圖表頂部的日期。
請試試這個並告訴我發生了什么:
private void timer3_Tick(object sender, EventArgs e)
{
DataPoint dp2 = new DataPoint(x, rnd.Next(100));
Series mySeries = chart1.Series[0];
chart1.Series.Clear();
mySeries.Points.RemoveAt(0);
mySeries.Points.Add(dp2);
chart1.Series.Add(mySeries);
x++;
}
也就是說,您可以嘗試刪除系列,修改它,然后將其添加回圖表。 我無法自己運行它,因為我無法輕松地在Visual Studio中重建您的項目。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.