在实时图表的垂直图表中,有没有办法使X轴的起点向右?

时间:2018-03-08 02:37:48

标签: c# wpf xaml livecharts

我使用LiveCharts绘制垂直折线图 我希望X轴在右边0。实现这个目标的方法是什么? (现在0在左边,最大值在右边)

我不是很擅长英语,所以请看下图。

/*
Y:Index, X:Value

@Now

   300|
      |
      |
      |
      |
     0|--------->
      0       65535

@ I want this!!

   300|
      |
      |
      |
      |
     0|--------->
    65535       0

*/

XAML

<lvc:CartesianChart Name="VChart" Background="#222" DisableAnimations="True" Hoverable="False" DataTooltip="{x:Null}" UpdaterState="{Binding ChartUpdaterState}" UseLayoutRounding="True">
    <lvc:CartesianChart.Series>
        <lvc:VerticalLineSeries Values="{Binding VerticalLineChartValues}" StrokeThickness="1" Configuration="{Binding VerticalLineChartConfig}"
                        Stroke="Khaki" Fill="Transparent" LineSmoothness="0" PointGeometry="{x:Null}" />
    </lvc:CartesianChart.Series>
    <lvc:CartesianChart.AxisX>
        <lvc:Axis IsMerged="True">
            <lvc:Axis.Separator>
                <lvc:Separator StrokeThickness="1" StrokeDashArray="2">
                    <lvc:Separator.Stroke>
                        <SolidColorBrush Color="#404F56" />
                    </lvc:Separator.Stroke>
                </lvc:Separator>
            </lvc:Axis.Separator>
        </lvc:Axis>
    </lvc:CartesianChart.AxisX>
    <lvc:CartesianChart.AxisY>
        <lvc:Axis IsMerged="True" Position="LeftBottom">
            <lvc:Axis.Separator>
                <lvc:Separator StrokeThickness="1" StrokeDashArray="4">
                    <lvc:Separator.Stroke>
                        <SolidColorBrush Color="#404F56" />
                    </lvc:Separator.Stroke>
                </lvc:Separator>
            </lvc:Axis.Separator>
        </lvc:Axis>
    </lvc:CartesianChart.AxisY>
</lvc:CartesianChart>

ViewModel.cs

        // Create config
        var vChartConfig = new CartesianMapper<int>();
        vChartConfig.X((value, index) => value);
        vChartConfig.Y((value, index) => index);
        VerticalLineChartConfig = vChartConfig;

谢谢。

1 个答案:

答案 0 :(得分:0)

这里有一个答案。

c# How to invert Y Axis with Live Charts

在我的情况下这样做了。

VChart.AxisX[0].LabelFormatter = x => (x * -1).ToString(CultureInfo.InvariantCulture);

// Flip values
for (var i = 0; i < values.Count; i++)
    values[i] = values[i] * -1;

VerticalLineChartValues.AddRange(values);