我正在开发我正在使用的 wpf 应用程序 Dynamic Data Display显示图表。它工作正常。
问题:
请检查这个:
如何使用 12 小时制而不是 24 小时制?请提出建议。
更新:
这是我的图表 XAML:
<d3:ChartPlotter Name="plotter" Margin="3,121,5,0" Grid.RowSpan="2" Height="373" VerticalAlignment="Top" VerticalContentAlignment="Stretch" LegendVisible="False">
<d3:ChartPlotter.HorizontalAxis>
<d3:HorizontalDateTimeAxis Name="dateAxis" />
</d3:ChartPlotter.HorizontalAxis>
<d3:VerticalAxisTitle FontFamily="Georgia" Content="Sensor Readings" />
<d3:HorizontalAxisTitle FontFamily="Georgia" Content="Date" />
</d3:ChartPlotter>
CS:
var dates = (from dr in datDs.Tables[0].AsEnumerable()
select new
{
date = dr.Field<DateTime>("DateRecorded")
}.date).ToList();
var datesDataSource = new EnumerableDataSource<DateTime>(dates);
datesDataSource.SetXMapping(x => dateAxis.ConvertToDouble(x));
最佳答案
要更改日期时间轴应用格式的方式,您必须查看 D3 的源代码。在文件中... DynamicDataDisplay/Charts/Axes/DateTime/DateTimeLabelProviderBase.cs
您必须更改 GetDateFormat 方法。这是将产生您想要的结果的示例:
protected virtual string GetDateFormat(DifferenceIn diff)
{
string format = null;
switch (diff)
{
case DifferenceIn.Year:
format = "yyyy";
break;
case DifferenceIn.Month:
format = "MMM";
break;
case DifferenceIn.Day:
format = "%d";
break;
case DifferenceIn.Hour:
format = "hh:mm";
break;
case DifferenceIn.Minute:
format = "%m";
break;
case DifferenceIn.Second:
format = "ss";
break;
case DifferenceIn.Millisecond:
format = "fff";
break;
default:
break;
}
return format;
}
关键是将小时的大小写从大写 H(24 小时制)更改为小写 h(12 小时制)。希望这对您有所帮助,并祝您在其余的图表项目中好运!
关于c# - 动态数据显示 : Change X-Axis date time format for graph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048533/