将鼠标悬停在折线图上时显示工具提示

时间:2015-11-29 01:31:47

标签: c#

任何人都可以帮我查看我的代码吗?当我的鼠标悬停在折线图上时,它不会弹出工具提示来显示信息。有什么不对吗?谢谢。

我的想法是当鼠标沿着线图移动时,它会弹出一个tootip来显示x轴值和y轴值,但是当我的鼠标悬停在线图上时没有任何东西弹出。这是我的代码,鼠标悬停在我从其他地方复制的事件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;


namespace Project42
{
    public partial class Form1 : Form
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
        public Form1()
        {
            InitializeComponent();
            chart1.Series[0].Points.AddXY("A", 1);
            chart1.Series[0].Points.AddXY("B", 12);
            chart1.Series[0].Points.AddXY("C", 23);
            chart1.Series[0].Points.AddXY("D", 32);
            chart1.Series[0].Points.AddXY("E", 39);
            chart1.Series[0].Points.AddXY("F", 43);
            chart1.Series[0].Points.AddXY("G", 55);
            chart1.Series[0].Points.AddXY("H", 59);
            chart1.Series[0].Points.AddXY("I", 67);
        }

        Point? prevPosition = null;
        ToolTip tooltip = new ToolTip();
        void chart1_MouseMove(object sender, MouseEventArgs e)
        {
            var pos = e.Location;
            if (prevPosition.HasValue && pos == prevPosition.Value)
                return;
            tooltip.RemoveAll();
            prevPosition = pos;

            var results = chart1.HitTest(pos.X, pos.Y, false,
                                       ChartElementType.DataPoint);

            foreach (var result in results)
            {
                if (result.ChartElementType == ChartElementType.DataPoint)
                {
                    var prop = result.Object as DataPoint;
                    if (prop != null)
                    {
                        var pointXPixel = result.ChartArea.AxisX.ValueToPixelPosition(prop.XValue);
                        var pointYPixel = result.ChartArea.AxisY.ValueToPixelPosition(prop.YValues[0]);

                        // check if the cursor is really close to the point (2 pixels around the point)
                        if (Math.Abs(pos.X - pointXPixel) < 2 &&
                            Math.Abs(pos.Y - pointYPixel) < 2)
                        {
                            tooltip.Show("X=" + prop.XValue + ", Y=" + prop.YValues[0], this.chart1,
                                            pos.X, pos.Y - 15);

                        }
                    }
                }
            }


        }



    }
}

1 个答案:

答案 0 :(得分:0)

试试这个。

这是我的财务(棒,烛台)图表的工作。仅显示YValue[0] DataPoint YValue作为大部分示例,但{Y}轴为 Point? prevPosition = null; ToolTip tooltip = new ToolTip(); private void chart_MouseMove(object sender, MouseEventArgs e) { var pos = e.Location; if (prevPosition.HasValue && pos == prevPosition.Value) return; tooltip.RemoveAll(); prevPosition = pos; var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint); // set ChartElementType.PlottingArea for full area, not only DataPoints foreach (var result in results) { if (result.ChartElementType == ChartElementType.DataPoint) // set ChartElementType.PlottingArea for full area, not only DataPoints { var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y); tooltip.Show(((int)yVal).ToString(), chart, pos.X, pos.Y - 15); } } }

library(caret)
library(C5.0)
library(irr)   

folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10)

str(folds)

mdd.cohort1_train = mdd.cohort1[-folds$Fold01,]
mdd.cohort1_test = mdd.cohort1[folds$Fold01,]

set.seed(123)
folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10)

cv_results = lapply(folds, function(x) {
  mdd.cohort1_train = mdd.cohort1[-x, ] 
  mdd.cohort1_test = mdd.cohort1[x, ] 
  mdd.cohort1_model = C5.0(edmsemmancomprej ~., data = mdd.cohort1_train) 
  mdd.cohort1_pred = predict(mdd.cohort1_model, mdd.cohort1_test) 
  mdd.cohort1_actual = mdd.cohort1_test$edmsemmancomprej 
  kappa = kappa2(data.frame(mdd.cohort1_actual, mdd.cohort1_pred))$value    
  return(kappa)
  })