OXYPlot 图表控件 显示X轴Log分布
作者:互联网
try
{
//var thisyearquery = data?.Where(d => Convert.ToDateTime(d.Date).Year == DateTime.Now.Year);
var Nearly15MonthData = data?.Where(d => Convert.ToDateTime(d.Date) > DateTime.Now.AddMonths(-15)).ToList();
PlotModel tmp = new PlotModel
{
};
this.PatientYearNumModeSeries = tmp;
var start = DateTime.Now.AddMonths(-15);
var end = DateTime.Now.AddMonths(0);
#region 坐标轴
//坐标轴X设置
DateTimeAxis linearAxisX = new DateTimeAxis();
linearAxisX.MajorGridlineStyle = LineStyle.Solid;
linearAxisX.MinorGridlineStyle = LineStyle.Dot;
linearAxisX.Position = AxisPosition.Bottom;
linearAxisX.Minimum = DateTimeAxis.ToDouble(start.AddMonths(-1));
linearAxisX.Maximum = DateTimeAxis.ToDouble(end.AddMonths(1));
//最小间隔一个月
linearAxisX.MinorIntervalType = DateTimeIntervalType.Months;
//间隔一个月
linearAxisX.IntervalType = DateTimeIntervalType.Months;
linearAxisX.FirstDayOfWeek = DayOfWeek.Monday;
//linearAxisX.MajorStep = (double)30.1 ;
//linearAxisX.MinorStep = (double)28;
linearAxisX.StringFormat = "MMM \nyyyy";
linearAxisX.Title = "时间";
tmp.Axes.Add(linearAxisX);
tmp.PlotAreaBorderThickness = new OxyThickness(1, 0, 0, 1);
//坐标轴Y设置
LinearAxis linearAxisY = new LinearAxis();
linearAxisY.MajorGridlineStyle = LineStyle.Solid;
linearAxisY.MinorGridlineStyle = LineStyle.Dot;
//缩放
linearAxisY.IsZoomEnabled = false;
//平移
linearAxisY.IsPanEnabled = false;
linearAxisY.MinorStep = double.NaN;
linearAxisY.Title = "人数";
tmp.Axes.Add(linearAxisY);
#endregion
var lineSeries1 = new LineSeries();
lineSeries1.InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline;
//lineSeries1.MarkerFill = OxyColor.Parse("#304F7D");
//lineSeries1.MarkerSize = 4;
//lineSeries1.MarkerStroke = OxyColors.White;
//lineSeries1.MarkerStrokeThickness = 1.5;
//lineSeries1.MarkerType = MarkerType.Circle;
lineSeries1.CanTrackerInterpolatePoints = false;
lineSeries1.Color = OxyColor.Parse("#304F7D");
lineSeries1.StrokeThickness = 2;
lineSeries1.Font = "Microsoft YaHei";
lineSeries1.FontSize = 16;
lineSeries1.DataFieldX = "Date";
lineSeries1.DataFieldY = "Value";
lineSeries1.TextColor = OxyColor.Parse("#686868");
var c = lineSeries1.TextColor;
lineSeries1.TrackerFormatString = "时间:{2:yyyy年MM月}\n人数:{4:0.##}人";
//是否在没有是实际点的地方显示Tracker 点信息
lineSeries1.CanTrackerInterpolatePoints = false;
//lineSeries1.LabelFormatString = "{1}";
//画曲线主要是需要将线的 InterpolationAlgorithm 属性 设置为 CanonicalSpline 就可变成曲线
//lineSeries1.InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline;
//var data = await _dictionaryItemService.QueryThisYear();
if (Nearly15MonthData.Count() == 0)
{
linearAxisY.Maximum = 10;
linearAxisY.MajorStep = 2;
//linearAxisY.Minimum = -1;
}
else
{
linearAxisY.Maximum = Nearly15MonthData.Count() * 1.2;
linearAxisY.MajorStep = Nearly15MonthData.Count() / 2;
// linearAxisY.Minimum = -(Nearly15MonthData.Count() / 8);
}
var date = start;
var datad = new Collection<DateValue>();
for (int i = 0; i <= 15; i++)
{
double increment = 3600 * 24 * GetDay1(Convert.ToDateTime(Nearly15MonthData[i].Date));
var count = Nearly15MonthData.Where(d => (Convert.ToDateTime(d.Date).Month == Convert.ToDateTime(date).Month) && (Convert.ToDateTime(d.Date).Year == Convert.ToDateTime(date).Year)).Count();
//lineSeries1.Points.Add(new DataPoint(DateTimeAxis.ToDouble(Convert.ToDateTime(date.ToString("yyyy-MM"))), count));
datad.Add(new DateValue { Date = Convert.ToDateTime(date.ToString("yyyy-MM")), Value = count });
date = date.AddSeconds(increment);
}
lineSeries1.ItemsSource = datad;
tmp.Series.Add(lineSeries1);
//lineSeries1.ItemsSource = datad;
}
catch (Exception ex)
{
ShowErrorNotification(ex);
}
标签:OXYPlot,控件,Convert,Log,lineSeries1,linearAxisY,linearAxisX,var,new 来源: https://www.cnblogs.com/ganbei/p/15631451.html