سؤال

في ZedGraph، كيف يمكنني إظهار التسميات النصية لكل نقطة وفي XAxis جميعا؟

إذا أفعل

myPane.XAxis.Type = AxisType.Text;
myPane.XAxis.Scale.TextLabels = array_of_string;

وأحصل على التسميات على XAxis مثل هذا

وإذا كنت تفعل

for (int i = 0; i < myCurve.Points.Count; i++)
{
    PointPair pt = myCurve.Points[i];
    // Create a text label from the Y data value
    TextObj text = new TextObj(
        pt.Y.ToString("f0"), pt.X, pt.Y + 0.1,
        CoordType.AxisXYScale, AlignH.Left, AlignV.Center);
    text.ZOrder = ZOrder.A_InFront;
    text.FontSpec.Angle = 0;
    myPane.GraphObjList.Add(text);
}

وأحصل على التسميات على منحنى، مثل هذا

ولكن إذا كنت تفعل على حد سواء في نفس الوقت، والعلامات على منحنى تختفي.

هل هناك طريقة للجمع بين كلا النوع من التسميات؟

هل كانت مفيدة؟

المحلول

ولقد تغيرت جوابي بعد توضيح هذه المسألة. عليك أن تتذكر لوضع العلامات بشكل صحيح:

<%
  System.Collections.Generic.List<ZedGraphWebPointPair> points = new System.Collections.Generic.List<ZedGraphWebPointPair>();
  for (int i = 0; i < 15; i++)
  {
    // Let's have some fun with maths
    points.Add(new ZedGraphWebPointPair
    {
      X = i,
      Y = Math.Pow(i - 10, 2) * -1 + 120
    });
  }

  System.Collections.Generic.List<string> XAxisLabels = new System.Collections.Generic.List<string>();

  TestGraph.CurveList.Add(new ZedGraphWebLineItem { Color = System.Drawing.Color.Red });
  TestGraph.XAxis.Scale.FontSpec.Size = 9;

  int j = 1;
  foreach (ZedGraphWebPointPair point in points)
  {
    // Add the points we calculated
    TestGraph.CurveList[0].Points.Add(point);

    // Add the labels for the points
    TestGraph.GraphObjList.Add(new ZedGraphWebTextObj
    {
      Location =
      {
        CoordinateFrame = ZedGraph.CoordType.XChartFractionYScale,
        // Make sure we position them according to the CoordinateFrame
        X = Convert.ToSingle(j) / points.Count - 0.05f,
        Y = Convert.ToSingle(point.Y) + 3f,
        AlignV = ZedGraph.AlignV.Top
      },
      Text = point.Y.ToString(),
      FontSpec = { Angle = 90, Size = 9, Border = { IsVisible = false } }
    });

    // Add the labels for the XAxis
    XAxisLabels.Add(String.Format("P{0}", j));

    j++;
  }

  TestGraph.RenderGraph += delegate(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane mp)
  {
    ZedGraph.GraphPane gp = mp[0];
    gp.XAxis.Type = ZedGraph.AxisType.Text;
    gp.XAxis.Scale.TextLabels = XAxisLabels.ToArray();
  };

%>

وهذا كود سوف ينتج هذا الرسم البياني:

نصائح أخرى

وإذا كان نوع هو محور النص، رمز أدناه هو الأسهل للحصول على الأشعة إحداثيات نقاط.)

for (int tPoint = 0; tPoint < curve.Points.Count; tPoint++)
{
    TextObj text = new TextObj(curve.Points[tPoint].Y.ToString(), curve.Points[tPoint].X, curve.Points[tPoint].Y + 10);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top