c#如何使用活动图表反转Y轴

c#如何使用活动图表反转Y轴,c#,charts,data-visualization,livecharts,C#,Charts,Data Visualization,Livecharts,我试着简单地反转Y轴,这样这张图会向上而不是向下 从6点开始到1点 这是反转图上的用户文档 这是我用来构建图表的示例 用户文档声明每个live series都有一个倒置的类,对于LineSeries类,它只是Verticalineseries,我将DateTime示例更改为Verticalineseries。然而,图表仍然从1-6向上。我错过了什么 public partial class MainWindow : Window { public Func<double, st

我试着简单地反转Y轴,这样这张图会向上而不是向下

从6点开始到1点

这是反转图上的用户文档

这是我用来构建图表的示例

用户文档声明每个live series都有一个倒置的类,对于LineSeries类,它只是Verticalineseries,我将DateTime示例更改为Verticalineseries。然而,图表仍然从1-6向上。我错过了什么

public partial class MainWindow : Window
{
    public Func<double, string> Formatter { get; set; }
    public SeriesCollection Series { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        var dayConfig = Mappers.Xy<DateModel>()
            .X(dayModel => (double)dayModel.DateTime.Ticks / TimeSpan.FromHours(1).Ticks)
            .Y(dayModel => dayModel.Value);

        Series = new SeriesCollection(dayConfig)
        {
            new VerticalLineSeries
            {
                Values = new ChartValues<DateModel>
                {
                    new DateModel
                    {
                        DateTime = System.DateTime.Now,
                        Value = 6
                    },
                    new DateModel
                    {
                        DateTime = System.DateTime.Now.AddHours(1),
                        Value = 5
                    },
                    new DateModel
                    {
                        DateTime = System.DateTime.Now.AddHours(2),
                        Value = 4
                    },
                    new DateModel
                    {
                        DateTime = System.DateTime.Now.AddHours(3),
                        Value = 3
                    },
                    new DateModel
                    {
                        DateTime = System.DateTime.Now.AddHours(4),
                        Value = 2
                    },
                    new DateModel
                    {
                        DateTime = System.DateTime.Now.AddHours(5),
                        Value = 1
                    }
                },
                Fill = Brushes.Transparent
            }
        };

        Formatter = value => new System.DateTime((long)(value * TimeSpan.FromHours(1).Ticks)).ToString("t");

        DataContext = this;
    }
}
公共部分类主窗口:窗口
{
公共函数格式化程序{get;set;}
公共序列集合系列{get;set;}
公共主窗口()
{
初始化组件();
var dayConfig=Mappers.Xy()
.X(dayModel=>(double)dayModel.DateTime.Ticks/TimeSpan.FromHours(1.Ticks)
.Y(dayModel=>dayModel.Value);
系列=新系列集合(dayConfig)
{
新轮生植物
{
值=新值
{
新日期模型
{
DateTime=System.DateTime.Now,
值=6
},
新日期模型
{
DateTime=System.DateTime.Now.AddHours(1),
值=5
},
新日期模型
{
DateTime=System.DateTime.Now.AddHours(2),
值=4
},
新日期模型
{
DateTime=System.DateTime.Now.AddHours(3),
值=3
},
新日期模型
{
DateTime=System.DateTime.Now.AddHours(4),
值=2
},
新日期模型
{
DateTime=System.DateTime.Now.AddHours(5),
值=1
}
},
填充=画笔。透明
}
};
Formatter=value=>newsystem.DateTime((long)(value*TimeSpan.FromHours(1.Ticks)).ToString(“t”);
DataContext=this;
}
}
XAML


生成下面的图表


为了简单起见,我会使用负值,然后格式化标签:

<lvc:CartesianChart>
        <lvc:CartesianChart.Series>
            <lvc:LineSeries Values="{Binding Values}"></lvc:LineSeries>
        </lvc:CartesianChart.Series>
        <lvc:CartesianChart.AxisY>
            <lvc:Axis MinValue="-10" MaxValue="-1" LabelFormatter="{Binding Formatter}">
                <lvc:Axis.Separator>
                    <!--to force the display of all the labels all the time
                    lets force the step-->
                    <lvc:Separator Step="1"></lvc:Separator>
                </lvc:Axis.Separator>
            </lvc:Axis>
        </lvc:CartesianChart.AxisY>
    </lvc:CartesianChart>

代码隐藏:

Values = new ChartValues<double>
        {
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -8,
            -9
        };

Formatter = x => x*-1 + " place";
Values=新图表值
{
-1,
-2,
-3,
-4,
-5,
-6,
-7,
-8,
-9
};
格式化程序=x=>x*-1+“位置”;
编辑 上一选项是此问题的具体解决方案,要反转轴,您需要:

 var invertedYMapper = LiveCharts.Configurations.Mappers.Xy<ObservablePoint>()
            .X(point => point.X)
            .Y(point => -point.Y);

        var lineSeries = new LineSeries
        {
            Values = new ChartValues<ObservablePoint>
                {
                    new ObservablePoint(0,2),
                    new ObservablePoint(1,5),
                    new ObservablePoint(2,7)
                }
        };

        // set the inverted mapping...
        lineSeries.Configuration = invertedYMapper;

        var seriesCollection = new SeriesCollection
        {
            lineSeries
        };

        // correct the labels
        var YAxis = new Axis
        {
            LabelFormatter = x => (x * -1).ToString()
        };
        cartesianChart1.AxisY.Add(YAxis);

        cartesianChart1.Series = seriesCollection;
var-dymapper=LiveCharts.Configurations.Mappers.Xy()
.X(点=>点.X)
.Y(点=>-point.Y);
var lineSeries=新的lineSeries
{
值=新值
{
新的观测点(0,2),
新观测点(1,5),
新观测点(2,7)
}
};
//设置反向映射。。。
lineSeries.配置=反相器动态映射器;
var seriesCollection=新的seriesCollection
{
系列
};
//更正标签
var YAxis=新轴
{
LabelFormatter=x=>(x*-1).ToString()
};
cartesianChart1.AxisY.Add(YAxis);
cartesianChart1.系列=系列集合;
 var invertedYMapper = LiveCharts.Configurations.Mappers.Xy<ObservablePoint>()
            .X(point => point.X)
            .Y(point => -point.Y);

        var lineSeries = new LineSeries
        {
            Values = new ChartValues<ObservablePoint>
                {
                    new ObservablePoint(0,2),
                    new ObservablePoint(1,5),
                    new ObservablePoint(2,7)
                }
        };

        // set the inverted mapping...
        lineSeries.Configuration = invertedYMapper;

        var seriesCollection = new SeriesCollection
        {
            lineSeries
        };

        // correct the labels
        var YAxis = new Axis
        {
            LabelFormatter = x => (x * -1).ToString()
        };
        cartesianChart1.AxisY.Add(YAxis);

        cartesianChart1.Series = seriesCollection;