ZedGraph TextLabels:将yaxis上的文本标签与y2axis(double)

时间:2017-05-19 13:21:08

标签: c# zedgraph

我正在使用ZedGraph来绘制数据。 ZedGraph非常棒,能够以很好的表现绘制许多曲线,但需要一些时间来弄清楚这些技巧。 我在网上进行了很多研究,但我没有找到任何关于文本标签y轴的解决方案 我有一个Y2轴类型线性我绘制我的曲线,我有Yaxis type = text我想显示textlabel 但我希望textlabel [index]与y2 [index]值对齐。 为了更好地理解, 我以这种格式从数据库中读取数据: ---- Col1 ------ Col2 -------- Col3

---- A ---------- 122.3 ------- 05:22:00

---- B ---------- 150.3 ------- 06:33:22

我尝试编辑scale.majorStep,scale.min或ScaleFormatEvent但是我不能将textlabel Yaxis与数据Y2axis对齐,因为y2轴点是可变的。 这是代码

chart2.GraphPane.CurveList["curve1"].AddPoint((XDate)(Col3[i]), Col2[i]);
myPane02m.Y2Axis.Type = ZedGraph.AxisType.Linear;
myPane02m.YAxis.Type = ZedGraph.AxisType.Text
myPane02m.YAxis.Scale.TextLabels = Col1;
myPane02m.YAxis.Scale.Min = minY;
myPane02m.YAxis.Scale.Max = maxY;
myPane02m.Y2Axis.Scale.Min = minY;
myPane02m.Y2Axis.Scale.Max = maxY;
myPane02m.YAxis.Scale.MajorStep = Offset;
myPane02m.YAxis.Scale.MinorStep = Offset;
myPane02m.Y2Axis.Scale.MajorStep = Offset;
myPane02m.Y2Axis.Scale.MinorStep = Offset;
public string MyCustomFormatter(GraphPane pane, Axis axis, double val, int index)
{
if (index < numberPoint)
{

            string label =  getCol1().ElementAt(index).ToString();
            //MessageBox.Show(label);
            return label;
            //}
        }
        else
        {
            return "";
        }
    }

`

`

我希望textlabel(Column1)位于y轴,Col2位于y2轴

如果有人为我的问题找到解决方案,那将会很棒 感谢

1 个答案:

答案 0 :(得分:0)

有一个解决方案:

是使用Textobj并将X = 0

  

 double label1Y = Curve.Points[i].Y; //LineItem
    TextObj txtObj1 = new TextObj(Column1.ToString() + "   " + label1Y.ToString("0.0"), 0, label1Y, ZedGraph.CoordType.XChartFractionYScale, ZedGraph.AlignH.Right, ZedGraph.AlignV.Center);

                        txtObj1.FontSpec.Border.IsVisible = false;
                        txtObj1.FontSpec.Fill.IsVisible = false;
                        txtObj1.FontSpec.Size = 5f;
                        txtObj1.FontSpec.IsAntiAlias = true;
                        txtObj1.FontSpec.Angle = 0;
                        // MessageBox.Show(txtObj1.FontSpec.StringAlignment.ToString());
                        txtObj1.IsVisible = true;
                        //txtObj1.Location.
                        txtObj1.ZOrder = ZOrder.A_InFront;

                        //txtObj1.IsInFrontOfData(true);
                        chart2.GraphPane.GraphObjList.Add(txtObj1);