将图表点标签移动到另一个位置并用箭头连接它们
Move chart point label to another position and connect them with an arrow
我想在图表中添加 26 个点并将它们从 a 标记到 z。
如何将标签从原来的位置移动到附近的位置,如何用箭头或其他符号连接标签和对应的点?演示图表如下所示:
DataPoint
Labels
几乎自动放置,您只有很少的选择来影响他们的位置。
有 SmartLabels
,但它们只允许您在 避免它们重叠时控制行为。
所以我认为您将不得不求助于 Annotations,而不是 Labels
。
事实上,要复制您的图像,您需要为每个 DataPoint
标记一个 LineAnnotation and one TextAnnotation,锚定到 DataPoint
..:[=28=]
假设您要将 DataPoints
一个一个地添加到您的 Series S1
中:
int p = S1.Points.AddXY(yourXValue, yourYValue);
string s = yourLabelText;
DataPoint dp = S1.Points[p];
现在您需要创建一个 TextAnnotation
,或者准确地说是 RectangleAnnotation,它是 TextAnnotation
的子类,允许背景和创建边框:
RectangleAnnotation ta = new RectangleAnnotation();
ta.AnchorDataPoint = dp;
ta.AnchorOffsetX = 5; // *
ta.AnchorOffsetY = 3; // *
ta.AnchorAlignment = ContentAlignment.BottomLeft;
ta.Text = s;
chart1.Annotations.Add(ta);
请注意我如何在此处设置定位 (*) 以将注释向上和向右移动一点。这些数字 不是像素,而是图表大小的百分比 。您需要进行一些试验才能找到您喜欢的值。优点是当您调整或缩放图表时,距离会缩放。
现在我们添加箭头:
LineAnnotation la = new LineAnnotation();
la.SetAnchor(dp);
la.AnchorOffsetX = 0.5; // (**)
la.AnchorOffsetY = -0.5; // (**)
la.StartCap = LineAnchorCapStyle.Arrow;
la.Width = ta.AnchorOffsetX - la.AnchorOffsetX;
la.Height = - ta.AnchorOffsetY + la.AnchorOffsetY; // (***)
chart1.Annotations.Add(la);
(**) 我将起点稍微偏离 DataPoint
这样箭头就不会与点的圆重叠。
(***)注意高度需要从点向上,所以是负数!
你会想要微调一些数字..
我想在图表中添加 26 个点并将它们从 a 标记到 z。
如何将标签从原来的位置移动到附近的位置,如何用箭头或其他符号连接标签和对应的点?演示图表如下所示:
DataPoint
Labels
几乎自动放置,您只有很少的选择来影响他们的位置。
有 SmartLabels
,但它们只允许您在 避免它们重叠时控制行为。
所以我认为您将不得不求助于 Annotations,而不是 Labels
。
事实上,要复制您的图像,您需要为每个 DataPoint
标记一个 LineAnnotation and one TextAnnotation,锚定到 DataPoint
..:[=28=]
假设您要将 DataPoints
一个一个地添加到您的 Series S1
中:
int p = S1.Points.AddXY(yourXValue, yourYValue);
string s = yourLabelText;
DataPoint dp = S1.Points[p];
现在您需要创建一个 TextAnnotation
,或者准确地说是 RectangleAnnotation,它是 TextAnnotation
的子类,允许背景和创建边框:
RectangleAnnotation ta = new RectangleAnnotation();
ta.AnchorDataPoint = dp;
ta.AnchorOffsetX = 5; // *
ta.AnchorOffsetY = 3; // *
ta.AnchorAlignment = ContentAlignment.BottomLeft;
ta.Text = s;
chart1.Annotations.Add(ta);
请注意我如何在此处设置定位 (*) 以将注释向上和向右移动一点。这些数字 不是像素,而是图表大小的百分比 。您需要进行一些试验才能找到您喜欢的值。优点是当您调整或缩放图表时,距离会缩放。
现在我们添加箭头:
LineAnnotation la = new LineAnnotation();
la.SetAnchor(dp);
la.AnchorOffsetX = 0.5; // (**)
la.AnchorOffsetY = -0.5; // (**)
la.StartCap = LineAnchorCapStyle.Arrow;
la.Width = ta.AnchorOffsetX - la.AnchorOffsetX;
la.Height = - ta.AnchorOffsetY + la.AnchorOffsetY; // (***)
chart1.Annotations.Add(la);
(**) 我将起点稍微偏离 DataPoint
这样箭头就不会与点的圆重叠。
(***)注意高度需要从点向上,所以是负数!
你会想要微调一些数字..