Jump to content
Sign in to follow this  
dipacheco

Criar Chart com 2 linhas... é possivel?

Recommended Posts

dipacheco

Pessoal... preciso de um grafico com 2 linhas mas so sei fazer com uma. Exemplo: estou a fazer um programa em que faço leituras de peso, altura e quero um grafico que mostre a leitura do peso e da altura em determinados dias... consigo fazer para o peso q é so uma linha... como posso adicionar a linha da altura? deixo o codigo para analisarem...


Private Sub Grafico_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CenterToScreen()
        Dim yleiturasA(25) As Object
        Dim yleiturasB(25) As Object
        Dim xDatas(25) As Object
        Dim i As Integer = 0
        connect = New SqlConnection("Data Source=PACHECO-PC\SQLEXPRESS;Initial Catalog=Teste;Integrated Security=True")
        connect.Open()
        command = New SqlCommand("SELECT Peso,Alturas,Data FROM Teste WHERE Codigo='" & Menu.TextBox2.Text & "'", connect)
        reader = command.ExecuteReader
        While reader.Read
            yleiturasA(i) = reader(0).ToString
            yleiturasB(i) = reader(1).ToString
            xDatas(i) = reader(2).ToString
            i += 1
        End While
        With Chart1
            .Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Line
            .Series(0).LegendText = "Peso"

            .ChartAreas(0).AxisY.Title = "Peso"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue

            .ChartAreas(0).AxisX.Title = "Data da leitura"
            .ChartAreas(0).AxisX.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisX.TitleForeColor = Color.Blue

            .Series(0).Points.DataBindXY(xDatas, yleiturasA)


            .Series(0).IsValueShownAsLabel = False
            .ChartAreas(0).Area3DStyle.Enable3D = False

        End With
        reader.Close()
        connect.Close()
    End Sub

Share this post


Link to post
Share on other sites
dipacheco

eu fiz isso e desapareceram-me as coisas todas... so me aparecia a legenda...

Share this post


Link to post
Share on other sites
Caça

Porque não colocas-te correctamente os dados


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

foi esta a alteraçao que fiz...


Private Sub Grafico_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CenterToScreen()
        Dim yleiturasA(25) As Object
        Dim yleiturasB(25) As Object
        Dim xDatas(25) As Object
        Dim i As Integer = 0
        connect = New SqlConnection("Data Source=PACHECO-PC\SQLEXPRESS;Initial Catalog=Teste;Integrated Security=True")
        connect.Open()
        command = New SqlCommand("SELECT Peso,Alturas,Data FROM Teste WHERE Codigo='" & Menu.TextBox2.Text & "'", connect)
        reader = command.ExecuteReader
        While reader.Read
            yleiturasA(i) = reader(0).ToString
            yleiturasB(i) = reader(1).ToString
            xDatas(i) = reader(2).ToString
            i += 1
        End While
        With Chart1
            .Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Line
            .Series(0).LegendText = "Peso"

            .Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Line
            .Series(1).LegendText = "Altura"

            .ChartAreas(0).AxisY.Title = "Peso"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue

            .ChartAreas(0).AxisX.Title = "Data da leitura"
            .ChartAreas(0).AxisX.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisX.TitleForeColor = Color.Blue

            .Series(0).Points.DataBindXY(xDatas, yleiturasA)

            .Series(1).Points.DataBindXY(xDatas, yleiturasB)


            .Series(0).IsValueShownAsLabel = False
            .Series(1).IsValueShownAsLabel = False
            .ChartAreas(0).Area3DStyle.Enable3D = False

        End With
        reader.Close()
        connect.Close()
    End Sub

Share this post


Link to post
Share on other sites
Caça

Não deve ser

            .ChartAreas(0).AxisY.Title = "Peso"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue

            .ChartAreas(0).AxisX.Title = "Data da leitura"
            .ChartAreas(0).AxisX.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisX.TitleForeColor = Color.Blue

mas sim

            .ChartAreas(0).AxisY.Title = "Peso"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue

            .ChartAreas(1).AxisX.Title = "Data da leitura"
            .ChartAreas(1).AxisX.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(1).AxisX.TitleForeColor = Color.Blue

Estavas a formatar duas vezes a mesma serie


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

nao me parece Caça... aí so estou a definir um série e o "ambiente do grafico"

Share this post


Link to post
Share on other sites
dipacheco

nao é? a serie está definida em series(0)... a parte q citaste é sobre a area de trabalho do eixo Y e do eixo X... dps tentei definir outra serie com series(1) mas desaparece-me tudo, nao sei o q pode ser.

Share this post


Link to post
Share on other sites
Caça

.ChartAreas(0).Area3DStyle.Enable3D = False

Não sei se ele aceita series com estilos diferentes, coloca também a formatação para a outra serie


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Fiz um pequeno teste, vê este código

        Dim Dt As New DataTable
        Dt.Columns.Add("ID")
        Dt.Columns.Add("ID2")
        Dt.Rows.Add("1", "10")
        Dt.Rows.Add("5", "18")
        Chart1.DataSource = Dt
        Chart1.Series.Add("Serie ID")
        Chart1.Series.Add("Serie ID2")
        Chart1.Series(0).XValueMember = "ID"
        Chart1.Series(1).XValueMember = "ID2"
        Chart1.Series(0).YValueMembers = "ID"
        Chart1.Series(1).YValueMembers = "ID2"


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

isto q m mandaste serve perfeitamente só que a legenda tem 3 membros e os valores estão errados... lol testaste?

isso dá os valores do ID no series 1

os valores do ID2 no ID

e o ID2 nao tem valores...

basicamente nao criaste 2 eixoes, criaste 3... fazes ideia pq pode ser?

Share this post


Link to post
Share on other sites
dipacheco

ja vi o erro! :thumbsup: ele ja tem uma serie criada por defeito... é so mudar o legend text da serie 0 e apagar o add da 2ª serie! obrigado caça! :D

Share this post


Link to post
Share on other sites
dipacheco

antes de parar de xatear... lol, fazes ideia como altero a grossura das linhas num grafico de linhas e a cor das mesmas? e tirar a grelha que fica no fundo do grafico, fazes alguma ideia? abraço.

Share this post


Link to post
Share on other sites
Caça

No desing do form, selecciona o gráfico, adiciona as duas séries e formata as series e o gráfico como quiseres.

No código, apenas tens de defenir o DataSource e atribuir os valores.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

consegui mudar o tamanho das linhas conforme disseste para fazer mas tirar a grelha de fundo nao estou a ver como faço sinceramente...

Share this post


Link to post
Share on other sites
Caça

Nas propriedades do gráfico, selecciona a "ChartAreas"

Dentro da janela que abriu, selecciona "Axes"

Dentro da outra janela que abriu, aparecem, 4 membros

Selecciona o X e coloca as propriedades "MajorGrid" e "MajorTickMark" como Disable

Selecciona o Y e repete o processo

Acho que é o que precisas.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

lol... de volta... mais uma pergunta em q m deves poder ajudar...

por exemplo nos pesos... eu sei que toda a gente que vou registar pesa mais de 60 kg, pelo que no meu eixo dos Y faz sentido começar nos 50 por exemplo e não nos 0... como posso controlar essa situaçao?

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.