Jump to content
Sign in to follow this  
Chamuanza

Ajuda com Grafico

Recommended Posts

Chamuanza

Oi Pessoal

Não consigo chegar a solução e peço ajuda - Tenho este código e o pretendido e colocar no grafico no eixo dos "X" o numero de colunas correspondentes o que para já consegui em parte, agora colocar no eixo "Y" o valor da variavel ContadorNum é que não consigo.

Nota: Não sei se tem importancia para o caso a Variavel Y está como Byte porque a tabela tem poucos registos

Desde já obrigado pela atenção

    Private Sub butGrafico_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butGrafico.Click

        Dim ContadorNum(50)
        Dim Y As Byte

        Dim ChartArea1 As New ChartArea()

        Chart1.ChartAreas.Add(ChartArea1)
        Dim series1 As New Series()
        Dim series2 As New Series()


        'For X = 1 To 50 Step 2
        '    series1.Points.Add(X)
        'Next


        For Y = 1 To 50
            For Linhas = 1 To DataGridView1.RowCount - 1
                For Colunas = 0 To 4
                    If DataGridView1.Item(Colunas, Linhas).Value = Y Then
                        ContadorNum(Y) = ContadorNum(Y) + 1
                    End If
                Next Colunas

            Next Linhas
            series1.Points.Add(Y)
        Next Y

        Chart1.Series.Add(series1)
        ' Chart1.Series.Add(series2)

    End Sub

Share this post


Link to post
Share on other sites
Caça

Não estás a definir o x da série


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Pois sim, mas como faço.

Sei que para já o que me aparece no grafico são as 50 colunas com valores por defeito

Como faço para atribuir no grafico  o valor de "ContadorNum"

Share this post


Link to post
Share on other sites
Caça

Porque é que não defines um DataSource?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Vou tentar ir por aí, mas como sou fraco nestas andanças não sei o que vai sair

Obrigado

Share this post


Link to post
Share on other sites
Chamuanza

Oi Caça fui a procura e arranjei um exemplo que tentei aplicar, mas não funciona

Private Sub butGrafico_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butGrafico.Click

        Dim dt As New DataTable
        Dim Vector(50)
        Dim i As Integer
        dt.Columns.Add("Nºs")
        dt.Columns.Add("Quant.")


        For Each i In Vector
            i = 0
        Next


        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='D:\ProjectoTotoMilhoes\TotoMilhões\GuardarResultados.mdf';" & _
          ";Integrated Security=True;User Instance=True"


        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        Dim SQL As String = "SELECT * FROM SaidosEuromilhoes  " '"


        ' Create a database command on the connection using query    
        Dim myCommand As New SqlCommand(SQL, connection)

        ' Open the connection    
        myCommand.Connection.Open()

        ' Create a database reader    
        Dim myReader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)


        While myReader.Read

            For i = 1 To 50
                For Linhas = 1 To DataGridView1.RowCount - 1
                    For Colunas = 0 To 4
                        If DataGridView1.Item(Colunas, Linhas).Value = i Then
                            Vector(i) = Vector(i) + 1
                        End If
                    Next Colunas

                Next Linhas

            Next
        End While

        myReader.Close()

        For i = 0 To 50

            dt.Rows.Add(i, Vector(i))
        Next

        Chart1.DataSource = dt
        Chart1.Series(0).XValueMember = "i"
        Chart1.Series(0).YValueMembers = "vector"

    End Sub

Share this post


Link to post
Share on other sites
Caça

Troca

        dt.Columns.Add("Nºs")
        dt.Columns.Add("Quant.")

por

        dt.Columns.Add("Ns")
        dt.Columns.Add("Quant")

e também

        Chart1.Series(0).XValueMember = "i"
        Chart1.Series(0).YValueMembers = "vector"

por

        Chart1.Series(0).XValueMember = "Ns"
        Chart1.Series(0).YValueMembers = "Quant"


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Oi Caça - Obrigado desde já pela atenção

Arranjei um exemplo que penso servir o que pretendo

 Dim xNumerosEuro(50) As Byte
      

        For T = 1 To 50
            xNumerosEuro(T) = T
        Next


        Dim yContagem() As Integer = Nothing

        For i As Integer = 1 To 50
            For Linhas = 1 To DataGridView1.RowCount - 1
                For Colunas = 0 To 4
                    If DataGridView1.Item(Colunas, Linhas).Value = i Then

                        yContagem(i) += 1

                    End If
                Next Colunas

            Next Linhas

        Next i

        With Chart1
            'define o tipo de gráfico
            .Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Column
            'define o texto da legenda 
            .Series(0).LegendText = "Países"

            'define o titulo do eixo y , sua fonte e a cor
            .ChartAreas(0).AxisY.Title = "População (Milhões)"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue
            'define o titulo do eixo x , sua fonte e a cor
            .ChartAreas(0).AxisX.Title = "Países"
            .ChartAreas(0).AxisX.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisX.TitleForeColor = Color.Blue

            'define a paleta de cores usada
            .Palette = ChartColorPalette.Fire

            'vincula os dados ao gráfico
            .Series(0).Points.DataBindXY(xNumerosEuro, yContagem)
            'exibe os valores nos eixos
            .Series(0).IsValueShownAsLabel = True
            'habilta a exibição 3D
            .ChartAreas(0).Area3DStyle.Enable3D = True

        End With

Só que ao correr da-me erro  "Object reference not set to an instance of an object." na linha  "yContagem(i) += 1"

Share this post


Link to post
Share on other sites
Caça

Isso é um array, tens de indicar o seu tamanho da mesma maneira que o fizeste para a variável xNumerosEuro

EDIT: Tambem tens de tirar o = Nothing


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Obrigado pela ajuda  :cheesygrin: já mostra o grafico, agora é fazer acertos, vou rabiar com o tipo(grafico)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.