У меня есть следующие данные в таблице базы данных, Столбцы: Дата, час (от 1 до 24) и температура.Создайте линейную диаграмму с отдельными линиями для каждого дня недели?
Я хочу создать линейную диаграмму, которая будет отображаться по оси х в часах от 1 до 24 и по оси Y - Температуры.
Теперь сложная часть состоит в том, что я хочу иметь разные цветовые линии для каждой даты. Так что если дата 2012-01-15, то у меня есть красная линия от 1 до 24, показывающая изменения температуры. если дата 2012-01-14, тогда синяя тоже от 1 до 24.
Чтобы быть ясным, я хочу иметь несколько дат в одной диаграмме.
Вот некоторые из кода у меня есть
SqlConnection conn2 = new SqlConnection(@"connectionString");
conn2.Open();
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = conn2;
cmd2.CommandText = "SELECT * FROM observation WHERE day BETWEEN @fromDate AND @toDate ORDER BY day ASC, hour ASC ";
cmd2.Parameters.AddWithValue("fromDate", dateTimePicker2.Value.Date);
cmd2.Parameters.AddWithValue("toDate", dateTimePicker3.Value.Date);
SqlDataReader reader = cmd2.ExecuteReader();
DataSet ds = new DataSet();
DataTable dt = new DataTable("dateRange");
dt.Columns.Add("day");
dt.Columns.Add("hour");
dt.Columns.Add("temp");
DataRow dr = dt.NewRow();
int counter = 0;
while (reader.Read())
{
if (reader[1].ToString() != dt.TableName)
{
if (dt.Rows.Count != 0 && dt.TableName != "dateRange")
{
dt.AcceptChanges();
ds.Tables.Add(dt);
counter++;
}
dt = new DataTable(reader[1].ToString());
dt.Columns.Add("day"):
dt.Columns.Add("hour");
dt.Columns.Add("temp");
}
dr = dt.NewRow();
dr[0] = reader[2];
dr[1] = reader[3];
dt.Rows.Add(dr);
}
if (dt.Rows.Count != 0)
{
dt.AcceptChanges();
ds.Tables.Add(dt);
}
else
{
lblError.Visible = false;
}
for (int i = 0; i < counter; i++)
{
chart1.Series[i].Name = i.ToString();
chart1.Series[i].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series[i].BorderWidth = 5;
if (i % 2 == 0)
{
chart1.Series[i].Color = Color.Red;
}
else
{
chart1.Series[i].Color = Color.Green;
}
chart1.DataSource = ds.Tables[i];
chart1.Series[i].XValueMember = "hour";
chart1.Series[i].YValueMembers = "temp";
}
chart1.Legends[0].Alignment = StringAlignment.Center;
chart1.Legends[0].Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;
chart1.DataBind();
chart1.Visible = true;
cmd2.Connection.Close();
Спасибо!
Что часть у вас возникли проблемы с? Извлечение данных из базы данных; создание диаграммы; разработка различных цветов для разных дат; показаны несколько строк в одном графике? Если бы вы могли опубликовать код, с которого вы начали, вы могли бы ожидать коротких и сжатых ответов. Или вы ищете приблизительные рекомендации? – Jonno
@Jonno На данный момент у меня возникают проблемы с отображением нескольких строк при сохранении 1 по 24 по оси x. Я попытался создать несколько таблиц внутри одного DataSet, но это не способ указать, какую таблицу использовать .... Я не уверен, как создать несколько строк, это будет несколько рядов? – NicoTek
@Jonno. Я добавил код, который у меня есть. Я знаю, что это беспорядочно: S Любая помощь будет принята с благодарностью – NicoTek