weixin_51128233 2022-09-27 16:48 采纳率: 0%
浏览 63
已结题

C#OXYPlot如何在LinearBarSeries的每个Bar(条形)上标注对应数据

在下在使用OXYPlot画LinearBarSeries条形图时想让所有条形图上方一直显示对应的数据,下面是对应绘图的代码
 DisplayModel = new PlotModel() { Title = "数据统计表", TitleFontSize = 10, TitleClippingLength = 10, AxisTierDistance = 4.0, AssignColorsToInvisibleSeries = false, };
                // 添加图例说明
                DisplayModel.Legends.Add(new Legend
                {
                    LegendPlacement = LegendPlacement.Outside,
                    LegendPosition = LegendPosition.BottomCenter,
                    LegendOrientation = LegendOrientation.Horizontal,
                    LegendBorderThickness = 0,
                    LegendTextColor = OxyColors.LightGray,                    

                });


   /// 
        /// 添加条形统计图到Chart
        /// 
        /// <param name="index"></param>
        private void CreateBarPlot(int index)
        {
            string title = "";
            //添加plotchart Y轴
            var ay1 = new LinearAxis()
            {
                Key = "y1",
                Position = AxisPosition.Left,
                
            };
            //添加X轴
            var ax = new DateTimeAxis()
            {
                Minimum = minValue,
                Maximum = maxValue,
                StringFormat = XAxisFormat,
                FontSize = 14,
                MajorStep = MinuteInterval / (24 * 60),//X轴时间间隔
                Position = AxisPosition.Bottom,
                Angle = 25,
                IsZoomEnabled = false,
                IsPanEnabled=true,
                IntervalType = DateTimeIntervalType.Auto,//X轴时间间隔类型
                IntervalLength = 1,
                MinorIntervalType = DateTimeIntervalType.Auto,
                
            };

            var totalBarSeries = new LinearBarSeries();
            totalBarSeries.YAxisKey = "y1";
            totalBarSeries.BarWidth = 22;
            //totalBarSeries.FillColor = OxyColor.FromArgb(69, 76, 175, 80);
            //totalBarSeries.StrokeThickness = 1;
            //totalBarSeries.StrokeColor = OxyColor.FromArgb(255, 76, 175, 80);
            // 点击时弹出的label内容
            totalBarSeries.TrackerFormatString = "{4:0}";
            totalBarSeries.RenderInLegend = true;
            // 设置数据绑定源和字段
            totalBarSeries.ItemsSource = DataList;
            totalBarSeries.DataFieldX = "Date";
            totalBarSeries.DataFieldY = GetYValue(index, ref title);//根据index获取对应绑定数据与标题
            totalBarSeries.Title=title;
            
            DisplayModel.Series.Add(totalBarSeries);
            DisplayModel.Axes.Add(ay1);
            DisplayModel.Axes.Add(ax);
            // 设置图形边框
            DisplayModel.PlotAreaBorderThickness = new OxyThickness(1, 0, 1, 1);
        }

img


上面图片是当前效果与在下想达到的需求

在下尝试寻找OXYPlot自带显示功能,但失败了。也尝试在图表对应的地方动态生成文本或label,但这样数据对应视图麻烦,且不便于拖拉于缩放
请教有没有尽量在不更换绘图类的情况下提供一些方法、思路让条形图在生成时就让其数据显示在BarTop(条形头顶)上
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月5日
    • 创建了问题 9月27日

    悬赏问题

    • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
    • ¥15 C++ 句柄后台鼠标拖动如何实现
    • ¥15 有人会SIRIUS 5.8.0这个软件吗
    • ¥30 comsol仿真等离激元
    • ¥15 静电纺丝煅烧后如何得到柔性纤维
    • ¥15 (标签-react native|关键词-镜像源)
    • ¥100 照片生成3D人脸视频
    • ¥15 伪装视频时长问题修改MP4的时长问题,
    • ¥15 JETSON NANO
    • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理