我试图简单地反转Y轴,这样这个图就会上升而不是下降。
从6开始上升到1。
这是倒置图上的用户文档
https://lvcharts.net/App/examples/v1/wpf/Inverted%20Series
这是我用来构建图表的例子
https://lvcharts.net/App/examples/v1/wpf/Date%20Time
用户doc声明每个live系列都有一个反向类,而对于LineSeries类,它只是我将DateTime示例更改为的VerticalLineSeries。然而,图表仍然从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;
}
}
XAML
<Grid>
<lvc:CartesianChart Series="{Binding Series}">
<lvc:CartesianChart.AxisX>
<lvc:Axis LabelFormatter="{Binding Formatter}"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
</Grid>
制作下面的图表
答案 0 :(得分:1)
为了简单起见,我会使用负负值,然后格式化标签:
<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";
上一个选项是此问题的特定解决方案,用于反转您需要的轴:
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;