如何解决C#:如何在x轴线图中以DateTime类型绘制?
我目前正在使用InteractiveDataDisplay.WPF在WPF中处理线图。我希望能够绘制带有DateTime类型的x轴和带有浮点类型的y轴。通过MYSQL数据库检索数据
如上图所示,由于我已将DateTime列表转换为double
类型的OLE格式,因此折线图不可读。我没有将其输入为DateTime列表的原因是,每次尝试打开uniquewindow.cs时,我都会收到一个异常“从'datetime'到'double'列表的无效转换”。
这是代码:
C#:
unique_window.xaml.cs
public unique_window(int id)
{
uniquebatches a = new uniquebatches(id);
//assigning x and y axis for graphs with data from the batch
var y1 = a.templist;
var y2 = a.llist;
var x = a.tlist;
//drawing linegraph with the data
linegrapht.Plot(x,y1);
linegraphh.Plot(x,y2);
}
uniquebatches.cs
public uniquebatches(int id)
{
using (MySqlConnection connection = new MySqlConnection(CS))
{
string command = "SELECT * FROM table WHERE BatchID = " + id;
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand(command,connection);
adapter.Fill(dt);
}
singleBatch = dt.DefaultView;
//putting respective rows into generic lists in order to use for linegraph.
templist = singleBatch.ToTable().Rows.OfType<DataRow>()
.Select(dr => dr.Field<float>("Temp")).ToList();
llist = singleBatch.ToTable().Rows.OfType<DataRow>()
.Select(dr => dr.Field<float>("Hum")).ToList();
List<DateTime> _tlist = singleBatch.ToTable().Rows.OfType<DataRow>()
.Select(dr => dr.Field<DateTime>("date")).ToList();
//converting DateTime generic list to a double list for OLE Automation date.
List<double> __tlist = new List<double>();
foreach (DateTime item in _tlist)
{
double converteditem = item.ToOADate();
__tlist.Add(converteditem);
}
tlist = __tlist;
}
XAML:
unique_window.xaml
<Window x:Class="PP1.unique_window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PP1" xmlns:d3="clr-namespace:InteractiveDataDisplay.WPF;assembly=InteractiveDataDisplay.WPF"
mc:Ignorable="d"
Title="{Binding Path=myTitle}" Height="759.7" Width="1130">
<Grid>
<Canvas Grid.ColumnSpan="3">
<d3:Chart BottomTitle="Date" LeftTitle="Temp" Height="287" Width="513" Canvas.Left="565" Canvas.Top="378">
<d3:LineGraph x:Name="linegrapht" Description="linegraph" Stroke="DarkRed" StrokeThickness="3"/>
</d3:Chart>
<d3:Chart BottomTitle="Date" LeftTitle="Hum" Height="129" Width="412" Canvas.Left="543" Canvas.Top="71">
<d3:LineGraph x:Name="linegraphh" Description="linegraph" Stroke="Blue" StrokeThickness="3"/>
</d3:Chart>
</Canvas>
</Grid>
如果不将List tlist转换为双精度类型,则会出现此异常。
如何使DateTime类型的X轴或具有可读日期的浮点数而没有无效的强制转换例外?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。