• [WPF] 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);
                }
    

  • 相关阅读:
    vue状态管理vuex+slot插槽+vue-resource请求
    海豚调度Dolphinscheduler源码分析(三)
    记录一次Curator操作zookeeper的错误
    海豚调度Dolphinscheduler源码分析(二)
    海豚调度DolphinScheduler源码分析(一)
    Java 基础(方法参数的值传递机制)
    Java 基础(匿名对象, 方法重载, 可变个数的形参)
    Java 练习(创建类, 设计类Circle计算圆的面积, 对象数组)
    Java 基础(类中属性与局部变量比较; 方法的分类)
    Java 基础(面向对象; 类和对象)
  • 原文地址:https://www.cnblogs.com/ganbei/p/15631451.html
Copyright © 2020-2023  润新知