WPF 中的 运行 Livecharts 时 CartesianChart 的垂直轴出现问题
Problem with vertical axis of CartesianChart when running Livecharts in WPF
我在我的 WPF 应用程序中实现了折线图。然而,当我 运行 我的应用程序时,我的图表上的垂直 Y-axis 没有使用它给出的整个 space。简而言之:Y-axis 崩溃了。
没有节目时的图表运行
ProfileWindow.xaml中的代码:
<lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Right" Grid.Row="2" Grid.Column="2" Grid.RowSpan="3">
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Height" MinValue="0" MaxValue="1000" LabelFormatter="{Binding YFormatter}">
<lvc:Axis.Separator>
<lvc:Separator Step="50"></lvc:Separator>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Samples" Labels="{Binding Labels}"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
</Grid>
我尝试使用 Axis.Separator 设置步长 50。但是如您所见,这不起作用。
运行宁Visual studio时的图表:
代码在Mainwindow.xaml.cs
public MainWindow()
{
InitializeComponent();
AppWindow = this;
OpenChildWindow(new DashboardWindow());
SeriesCollection = new SeriesCollection
{
new LineSeries
{
Title = "Series 1",
Values = new ChartValues<double> { 4, 60, 5, 2 ,4 }
},
new LineSeries
{
Title = "Series 2",
Values = new ChartValues<double> { 6, 7, 30, 4 ,6 },
},
new LineSeries
{
Title = "Series 3",
Values = new ChartValues<double> { 4,2,700,2,7 },
}
};
Labels = new[] { "Jan", "Feb", "Mar", "Apr", "May" };
YFormatter = value => value.ToString("C");
DataContext = this;
}
public SeriesCollection SeriesCollection { get; set; }
public string[] Labels { get; set; }
public Func<double, string> YFormatter { get; set; }
我的thinking/implementation错在哪里?
将Axis.MaxValue
设置为固定值时,绘图无法缩放。
从 y 轴移除 MaxValue
属性。轴的范围将由数据点或系列的最大值自动确定。这样绘图将始终使用屏幕上可用的最大值 space(缩放以适合)。
<lvc:CartesianChart Series="{Binding SeriesCollection}"
Height="300"
LegendLocation="Right"
Grid.Row="2"
Grid.Column="2"
Grid.RowSpan="3">
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Height" LabelFormatter="{Binding YFormatter}">
<lvc:Axis.Separator>
<lvc:Separator Step="50" />
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Samples" Labels="{Binding Labels}" />
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
我在我的 WPF 应用程序中实现了折线图。然而,当我 运行 我的应用程序时,我的图表上的垂直 Y-axis 没有使用它给出的整个 space。简而言之:Y-axis 崩溃了。
没有节目时的图表运行
ProfileWindow.xaml中的代码:
<lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Right" Grid.Row="2" Grid.Column="2" Grid.RowSpan="3">
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Height" MinValue="0" MaxValue="1000" LabelFormatter="{Binding YFormatter}">
<lvc:Axis.Separator>
<lvc:Separator Step="50"></lvc:Separator>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Samples" Labels="{Binding Labels}"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
</Grid>
我尝试使用 Axis.Separator 设置步长 50。但是如您所见,这不起作用。
运行宁Visual studio时的图表:
代码在Mainwindow.xaml.cs
public MainWindow()
{
InitializeComponent();
AppWindow = this;
OpenChildWindow(new DashboardWindow());
SeriesCollection = new SeriesCollection
{
new LineSeries
{
Title = "Series 1",
Values = new ChartValues<double> { 4, 60, 5, 2 ,4 }
},
new LineSeries
{
Title = "Series 2",
Values = new ChartValues<double> { 6, 7, 30, 4 ,6 },
},
new LineSeries
{
Title = "Series 3",
Values = new ChartValues<double> { 4,2,700,2,7 },
}
};
Labels = new[] { "Jan", "Feb", "Mar", "Apr", "May" };
YFormatter = value => value.ToString("C");
DataContext = this;
}
public SeriesCollection SeriesCollection { get; set; }
public string[] Labels { get; set; }
public Func<double, string> YFormatter { get; set; }
我的thinking/implementation错在哪里?
将Axis.MaxValue
设置为固定值时,绘图无法缩放。
从 y 轴移除 MaxValue
属性。轴的范围将由数据点或系列的最大值自动确定。这样绘图将始终使用屏幕上可用的最大值 space(缩放以适合)。
<lvc:CartesianChart Series="{Binding SeriesCollection}"
Height="300"
LegendLocation="Right"
Grid.Row="2"
Grid.Column="2"
Grid.RowSpan="3">
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Height" LabelFormatter="{Binding YFormatter}">
<lvc:Axis.Separator>
<lvc:Separator Step="50" />
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Samples" Labels="{Binding Labels}" />
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>