0

私はC#プログラミングが初めてです。私は会社で働いています。誰かがいくつかのタスクを完了し、グラフのパーツを残しました。今、私はこれをしなければなりません。

私は C# で steema チャートを使用しています。チャートの左側 (y 軸) に複数の軸があり、すべての軸が x 軸であるチャートを作成したいと考えています。左端の各軸は、異なる軸長になります。

センサーごとに 6 つのチェック ボックスを作成しました。そのボックスにチェックを入れると、デフォルトの長さの軸が表示されます。チェック ボックスを作成しましたが、軸の長さを設定できず、複数の軸を描画することもできません。

よくわかりませんが、これは正しい質問ですか? 間違っていたらすみません? 私が多くの情報を提供していない場合は、私に尋ねてください。

添付の画像に示すようなタイプのチャートを描きたいです。X 軸(システム時間)は全シリーズ共通で、Y 軸はシリーズごとに異なります。私はすべてのシリーズのチェックボックスを持っているので、チェックボックスをオンにすると、そのシリーズの Y 軸はデフォルトの軸範囲 (たとえば、最小 (0) と最大 (1000)) で表示する必要があります。 チャート

前もって感謝します。

4

1 に答える 1

1

少し前に Steema サポート フォーラムで非常によく似たことが議論されました。ここで見てください。

ここに同じコードを投稿します。

    int nSeries = 3;
    private void InitializeChart()
    {
        tChart1.Aspect.View3D = false;
        tChart1.Header.Visible = false;
        tChart1.Legend.Alignment = LegendAlignments.Bottom;
        for (int i = 0; i < nSeries; i++)
        {
            new Steema.TeeChart.Styles.Line(tChart1.Chart);
            tChart1.Axes.Custom.Add(new Steema.TeeChart.Axis(tChart1.Chart));
            tChart1[i].CustomVertAxis = tChart1.Axes.Custom[i];
            tChart1.Axes.Custom[i].AxisPen.Color = tChart1[i].Color;
            tChart1.Axes.Custom[i].Grid.Visible = false;
            tChart1.Axes.Custom[i].Title.Visible = true;
            tChart1.Axes.Custom[i].Title.Caption = "Series" + i.ToString();
            tChart1[i].FillSampleValues(20);
            tChart1.Axes.Custom[i].PositionUnits = PositionUnits.Pixels;
        }

        tChart1.Panel.MarginUnits = PanelMarginUnits.Pixels;
        tChart1.Draw();
        PlaceAxes(0, 0, 0, 0, 0);
        tChart1.Draw();
    }

    private void PlaceAxes(int nSeries, int NextXLeft, int NextXRight, int MargLeft, int MargRight)
    {
        const int extraPos = 12;
        const int extraMargin = 105;
        //Variable
        int MaxLabelsWidth;
        int lenghtTicks;
        int extraSpaceBetweenTitleAndLabels;
        if (tChart1[nSeries].Active)
        {
            MaxLabelsWidth = tChart1.Axes.Custom[nSeries].MaxLabelsWidth();
            lenghtTicks = tChart1.Axes.Custom[nSeries].Ticks.Length;
            extraSpaceBetweenTitleAndLabels = (tChart1.Axes.Custom[nSeries].Title.Width);//- tChart1.Axes.Custom[nSeries].MaxLabelsWidth());
            if (tChart1.Axes.Custom[nSeries].OtherSide)
            {
                tChart1.Axes.Custom[nSeries].RelativePosition = NextXRight;
                NextXRight = NextXRight - (MaxLabelsWidth + lenghtTicks + extraSpaceBetweenTitleAndLabels + extraPos);
                MargRight = MargRight + extraMargin;
            }

            else
            {
                tChart1.Axes.Custom[nSeries].RelativePosition = NextXLeft;
                NextXLeft = NextXLeft - (MaxLabelsWidth + lenghtTicks + extraSpaceBetweenTitleAndLabels + extraPos);
                MargLeft = MargLeft + extraMargin;
            }

            tChart1.Panel.MarginLeft = MargLeft;
            tChart1.Panel.MarginRight = MargRight;

            nSeries++;

            if (nSeries <= tChart1.Series.Count - 1)
            {
                PlaceAxes(nSeries, NextXLeft, NextXRight, MargLeft, MargRight);
            }
        }
    }
于 2013-02-05T10:28:50.197 に答える