c#如何使用活动图表反转Y轴
我试着简单地反转Y轴,这样这张图会向上而不是向下 从6点开始到1点 这是反转图上的用户文档 这是我用来构建图表的示例 用户文档声明每个live series都有一个倒置的类,对于LineSeries类,它只是Verticalineseries,我将DateTime示例更改为Verticalineseries。然而,图表仍然从1-6向上。我错过了什么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
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;