tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Chartオブジェクト 打点でのX軸の扱いに関して
投稿日: 2016/04/07(Thu) 18:40
投稿者食う寝る走る
開発環境
 OS:Windows7(32bit)プロフェッショナル
 IDE:VS2015 コミュニティ(VB.net)

前回はNo.11641で Chartコントロールで、カーソルの表示に関して質問させて頂きました。
今回は、同じような考えで、既にフォームのLOADイベントで表示してあるチャート上の指定ポイント(X-Y)に打点をしたいのですが、
何故か X軸の値にどのような値を入れてもX=0に打点され、X軸目盛が消えてしまいます。


サンプルコードでは、SIN(Y1軸)、COS(Y2軸)波を書いてあります。

(質問1)X=5、Y=0に打点する場合、Y軸は反映されますがX軸は0の所に打点されてしまう?

(質問2)打点後、X軸の軸目盛が消えてしまう?

以上となりますが、よろしくお願いいたします。



下記コードは、フォーム上に
Chart×1
ボタン×1
テキストボックス×2
ラベル×2
貼り付けの上、実行しボタン1のクリックでテキストボックス1(X軸),2(Y軸)の値をチャートにに打点いたします。


'------------------------------------------------------------------------------------------------
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1

    Dim series1 As New Series() 'SIN
    Dim series2 As New Series() 'COS
    Dim series3 As New Series() '任意ポイント プロット
    Dim series4 As New Series() '任意ポイント プロット
    Dim xval() As Double 'X軸格納
    Dim yval() As Double 'Y1軸格納
    Dim yval2() As Double 'Y2軸格納

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


        Label1.Text = "X"
        Label2.Text = "Y"
        TextBox1.Text = 5
        TextBox2.Text = 0

        'チャートコントロールオブジェクト
        Chart1.Series.Clear()

        '~データのシリーズ追記
        With Chart1
            .Series.Add(series1) 'SIN
            .Series.Add(series2) 'COS
            .Series.Add(series3) '任意ポイント プロット
            .Series.Add(series4) '任意ポイント プロット
        End With



        '内部データの初期化
        series1.Points.Clear()
        series2.Points.Clear()
        series3.Points.Clear()
        series4.Points.Clear()


        ' グラフの種類は散布図(Point Chart)
        series1.ChartType = SeriesChartType.Point

        With Chart1.ChartAreas(0).AxisX
            '10点毎に補助線を表示
            .MinorGrid.Enabled = True  'True に設定しないと表示しない
            .Title = "X"
            .MinorGrid.Interval = 100
            .MinorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash
            .LabelStyle.Format = "0.0"
        End With


        With Chart1.ChartAreas(0).AxisY 'Y軸の設定
            .TitleForeColor = Color.Red
            .Title = "sin(X)"  'タイトルのテキストを設定
            .LineColor = Color.Red
            .MajorGrid.LineColor = Color.Red
            .LabelStyle.ForeColor = Color.Red
            .MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
            .LabelStyle.Format = "0.0"
            .Enabled = AxisEnabled.True '第1軸を有効化
        End With

        '

        With Chart1.ChartAreas(0).AxisY2 'Y2軸の設定
            .TitleForeColor = Color.Blue
            .Title = "cos(X)"  'タイトルのテキストを設定
            .LineColor = Color.Blue
            .MajorGrid.LineColor = Color.Blue
            .LabelStyle.ForeColor = Color.Blue
            .MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
            .LabelStyle.Format = "0.0"
            .Enabled = AxisEnabled.True '第二軸表示を有効化

        End With


        '凡例
        With Chart1
            .Series(0).LegendText = "cos(X)"
            .Series(1).LegendText = "sin(X)"
            .Series(2).LegendText = "プロット"
            .Series(3).LegendText = "プロット"
        End With



        ' グラフの種類は散布図(sin Chart)
        With series1
            .ChartType = SeriesChartType.Point
            .MarkerSize = 5
            .MarkerStyle = MarkerStyle.Circle
            .MarkerBorderColor = Color.Black
            .MarkerBorderWidth = 0.1
            .MarkerColor = Color.Blue
            .XAxisType = AxisType.Primary
            .YAxisType = AxisType.Secondary
            .Enabled = True
        End With



        ' グラフの種類は散布図(cos Chart)
        With series2
            .ChartType = SeriesChartType.Point
            .MarkerSize = 5
            .MarkerStyle = MarkerStyle.Circle
            .MarkerBorderColor = Color.Black
            .MarkerBorderWidth = 0.1
            .MarkerColor = Color.Red
            .XAxisType = AxisType.Primary
            .YAxisType = AxisType.Primary
            .Enabled = True
        End With



        ' グラフの種類は散布図(任意Point Chart)
        With series3
            .ChartType = SeriesChartType.Point
            .MarkerSize = 20
            .MarkerStyle = MarkerStyle.Circle
            .MarkerBorderColor = Color.Black
            .MarkerBorderWidth = 0.1
            .MarkerColor = Color.Green
            .XAxisType = AxisType.Primary
            .YAxisType = AxisType.Primary
            .Enabled = True
        End With

        ' グラフの種類は散布図(任意Point Chart)
        With series4
            .ChartType = SeriesChartType.Point
            .MarkerSize = 20
            .MarkerStyle = MarkerStyle.Circle
            .MarkerBorderColor = Color.Black
            .MarkerBorderWidth = 0.1
            .MarkerColor = Color.Aquamarine
            .XAxisType = AxisType.Primary
            .YAxisType = AxisType.Secondary
            .Enabled = True
        End With


        Dim k As Integer = 0 '格納配列のアドレス用カウンター
        For i = 0 To 10 Step 0.01
            ReDim Preserve xval(k) '配列の要素数の変更
            xval(k) = i 'X軸値格納
            ReDim Preserve yval(k) '配列の要素数の変更
            yval(k) = Math.Sin(xval(k)) 'Y軸値格納
            ReDim Preserve yval2(k) '配列の要素数の変更
            yval2(k) = Math.Cos(xval(k)) 'Y2軸値格納

            series1.Points.AddXY(xval(k), yval(k)) 'SIN波プロット
            series2.Points.AddXY(xval(k), yval2(k)) 'COS波プロット

            k = k + 1
        Next

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        series3.Points.Clear()  '内部データの初期化
        series3.Points.AddXY(TextBox1.Text, TextBox2.Text) '打点

        series4.Points.Clear() '内部データの初期化
        series4.Points.AddXY(TextBox1.Text, TextBox2.Text) '打点

    End Sub
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。