none
No se muestran todos los datos en el eje x del control CHART RRS feed

  • Pregunta

  • Saludos cordiales

    Estoy realizando una grafica usando el control chart el problema es que si los valores para el eje x es muy grande no se me muestran todos, quisiera saber como puedo mostrar todos los datos, se me ocurre como manejar escalas o algo asi

    por ejemplo si cargo 8 filas se muestran perfectamente pero sin son mas no se muestran que debo hacer

    les agradezco infinitamente su colaboracion

    gracias


    winckelman

    lunes, 4 de febrero de 2013 5:08

Respuestas

  • Hola Fernando.

    Vamos a crear un gráfico chart, me imagino que utilizas vb2008 o superior.

    Trabajaremos com DataVisualizationCharting que son los mejores gráficos para net.

    Para ello importa los espacios de nombre siguientes:

    Imports System.Drawing
    Imports System.Windows.Forms.DataVisualization.Charting

    Una vez hecho eso vamos a crear un gráfico que por ejemplo tiene 12 valores mensuales. Yo personalmente tengo la manía porque utilizo muchos datos de cargar los gráficos manualmente, ya que puedo cambiar lo que precise sin problemas. Por lo tanto imaginate una variable o array de 12 posiciones. Un array será para los valores del gráfico y el otro para los períodos del mismo, por ejemplo 12 meses.

    Sigue los pasos que te describo y verás un gráfico escelente. Podrás cambiarle lo que precises: Colores, Tamaños de letra, Título, etc.

    Private Sub GrafValores()
            ' Asignamos los valores a los ejes "Y" y "X", procedentes de un array.
            Try
                Dim Yval(11) As Double
                Dim Xval(11) As String
                Dim strEjercicios(11) As String
    
    For i As Integer = 0 To 11
                        strEjercicios(i) = Strings.Left(m_strPerMensualesMes(i), 3) & "-" & Strings.Right(m_strPerMensualesAño(i), 2)
                    Next i
    
    'Rellenas el eje Y con los valores de tu array.
    'El eje Y será para mostrar los ejercicios o períodos.
                            For i As Integer = 0 To 11
                                Yval(i) = m_dblValoresDelGráfico(i) / 1000
                                Xval(i) = strEjercicios(i)
                            Next
    
                            Chart1.Titles.Clear()
                            Chart1.Titles.Add("El título de tu gráfico")
    
    Bueno, ahora vamos a poner las propiedades al gráfico.
        'Posición y propiedades del título "Colección "TITLES".
                'Chart1.Titles.Add("El nombre de tu gráfico")
                Chart1.Titles(0).Alignment = ContentAlignment.MiddleCenter 'Centramos el título del gráfico
                Chart1.Titles(0).Docking = Docking.Top  'Bottom, situaría el título en la parte inferior.
                Chart1.Titles(0).DockingOffset = -2 'Regula la altura del titulo del gráfico
                Chart1.Titles(0).Font = New Font("Trebuchet MS", 14, FontStyle.Bold) 'Fuente, tamaño y estilo del título
                Chart1.Titles(0).ForeColor = Color.DarkSlateGray 'Color de la fuente del título.
                Chart1.Titles(0).ShadowOffset = 3 'Tamaño de la sombra del título
                Chart1.Titles(0).ShadowColor = Color.DarkGray 'Color de la sombra del título
    
    'Ahora vamos a rellenar todo el área del gráfico
    'Posición y propiedades de las series "Colección CHART AREAS"
                Chart1.ChartAreas("Default").AxisX.Title = "Períodos mensuales"
                Chart1.ChartAreas("Default").AxisX.TitleFont = New Font("Verdana", 8, FontStyle.Bold)
                Chart1.ChartAreas("Default").AxisX.TitleForeColor = Color.Maroon
                Chart1.ChartAreas("Default").AxisX.TitleAlignment = StringAlignment.Center
                Chart1.ChartAreas("Default").AxisX.IsMarginVisible = False
    
                Chart1.ChartAreas("Default").AxisY.Title = "Valores en miles de u.m."
                Chart1.ChartAreas("Default").AxisY.TitleFont = New Font("Verdana", 8, FontStyle.Bold)
                Chart1.ChartAreas("Default").AxisY.TitleForeColor = Color.Maroon
                Chart1.ChartAreas("Default").Area3DStyle.Rotation = 2 ' 20
                Chart1.ChartAreas("Default").Area3DStyle.PointDepth = 75
                Chart1.ChartAreas("Default").Area3DStyle.PointGapDepth = 45
                Chart1.ChartAreas("Default").AxisY.TitleAlignment = StringAlignment.Center
    
    'Ahora asignamos el tipo de gráfico que queremos.
    Chart1.Series("Series1").ChartType = DataVisualization.Charting.SeriesChartType.Column
    
      'Rellenamos el gráfico con los datos escogidos
                Chart1.Series("Series1").Points.DataBindXY(Xval, Yval)
    
                'Mostramos como etiqueta de datos, los valores que alimentan la gráfica
                Chart1.Series("Series1").IsValueShownAsLabel = True 'Visualizamos las etiquetas
                Chart1.Series("Series1").LabelForeColor = Color.Blue 'Pintamos el color de la etiqueta
                Chart1.Series("Series1").LabelFormat = "F1" 'Queda en el cálculo de la fórmula divido por 1000 y añadimos el primer decimal de las centenas.
    End sub

    Espero que esto te sirva para todos tus gráficos.

    Un cordial saludo.

    Gemma.


    • Editado gemma_campillo lunes, 4 de febrero de 2013 19:43 He cambiado en la respuesta unos valores.
    • Marcado como respuesta ferchorh9 martes, 12 de febrero de 2013 17:05
    lunes, 4 de febrero de 2013 19:40

Todas las respuestas

  • Hola:

    Puedes utilizar un divisor por mil para mostrar esos datos, incluso puedes poner una etiqueta que indique "Valores en miles de u.m.".

    u.m. se correspondería en este caso con unidades monetarias por ejemplo.

    Un saludo.

    Gemma.

    lunes, 4 de febrero de 2013 6:50
  • gracias por responder Gemma; pero no se como hacer lo que me indicas, si me ayudad con el código o si es una propiedad en la q se ponga que se ajuste automaticamente y me la indicas te lo agradecria

    Fernando


    winckelman

    lunes, 4 de febrero de 2013 16:24
  • Hola Fernando.

    Vamos a crear un gráfico chart, me imagino que utilizas vb2008 o superior.

    Trabajaremos com DataVisualizationCharting que son los mejores gráficos para net.

    Para ello importa los espacios de nombre siguientes:

    Imports System.Drawing
    Imports System.Windows.Forms.DataVisualization.Charting

    Una vez hecho eso vamos a crear un gráfico que por ejemplo tiene 12 valores mensuales. Yo personalmente tengo la manía porque utilizo muchos datos de cargar los gráficos manualmente, ya que puedo cambiar lo que precise sin problemas. Por lo tanto imaginate una variable o array de 12 posiciones. Un array será para los valores del gráfico y el otro para los períodos del mismo, por ejemplo 12 meses.

    Sigue los pasos que te describo y verás un gráfico escelente. Podrás cambiarle lo que precises: Colores, Tamaños de letra, Título, etc.

    Private Sub GrafValores()
            ' Asignamos los valores a los ejes "Y" y "X", procedentes de un array.
            Try
                Dim Yval(11) As Double
                Dim Xval(11) As String
                Dim strEjercicios(11) As String
    
    For i As Integer = 0 To 11
                        strEjercicios(i) = Strings.Left(m_strPerMensualesMes(i), 3) & "-" & Strings.Right(m_strPerMensualesAño(i), 2)
                    Next i
    
    'Rellenas el eje Y con los valores de tu array.
    'El eje Y será para mostrar los ejercicios o períodos.
                            For i As Integer = 0 To 11
                                Yval(i) = m_dblValoresDelGráfico(i) / 1000
                                Xval(i) = strEjercicios(i)
                            Next
    
                            Chart1.Titles.Clear()
                            Chart1.Titles.Add("El título de tu gráfico")
    
    Bueno, ahora vamos a poner las propiedades al gráfico.
        'Posición y propiedades del título "Colección "TITLES".
                'Chart1.Titles.Add("El nombre de tu gráfico")
                Chart1.Titles(0).Alignment = ContentAlignment.MiddleCenter 'Centramos el título del gráfico
                Chart1.Titles(0).Docking = Docking.Top  'Bottom, situaría el título en la parte inferior.
                Chart1.Titles(0).DockingOffset = -2 'Regula la altura del titulo del gráfico
                Chart1.Titles(0).Font = New Font("Trebuchet MS", 14, FontStyle.Bold) 'Fuente, tamaño y estilo del título
                Chart1.Titles(0).ForeColor = Color.DarkSlateGray 'Color de la fuente del título.
                Chart1.Titles(0).ShadowOffset = 3 'Tamaño de la sombra del título
                Chart1.Titles(0).ShadowColor = Color.DarkGray 'Color de la sombra del título
    
    'Ahora vamos a rellenar todo el área del gráfico
    'Posición y propiedades de las series "Colección CHART AREAS"
                Chart1.ChartAreas("Default").AxisX.Title = "Períodos mensuales"
                Chart1.ChartAreas("Default").AxisX.TitleFont = New Font("Verdana", 8, FontStyle.Bold)
                Chart1.ChartAreas("Default").AxisX.TitleForeColor = Color.Maroon
                Chart1.ChartAreas("Default").AxisX.TitleAlignment = StringAlignment.Center
                Chart1.ChartAreas("Default").AxisX.IsMarginVisible = False
    
                Chart1.ChartAreas("Default").AxisY.Title = "Valores en miles de u.m."
                Chart1.ChartAreas("Default").AxisY.TitleFont = New Font("Verdana", 8, FontStyle.Bold)
                Chart1.ChartAreas("Default").AxisY.TitleForeColor = Color.Maroon
                Chart1.ChartAreas("Default").Area3DStyle.Rotation = 2 ' 20
                Chart1.ChartAreas("Default").Area3DStyle.PointDepth = 75
                Chart1.ChartAreas("Default").Area3DStyle.PointGapDepth = 45
                Chart1.ChartAreas("Default").AxisY.TitleAlignment = StringAlignment.Center
    
    'Ahora asignamos el tipo de gráfico que queremos.
    Chart1.Series("Series1").ChartType = DataVisualization.Charting.SeriesChartType.Column
    
      'Rellenamos el gráfico con los datos escogidos
                Chart1.Series("Series1").Points.DataBindXY(Xval, Yval)
    
                'Mostramos como etiqueta de datos, los valores que alimentan la gráfica
                Chart1.Series("Series1").IsValueShownAsLabel = True 'Visualizamos las etiquetas
                Chart1.Series("Series1").LabelForeColor = Color.Blue 'Pintamos el color de la etiqueta
                Chart1.Series("Series1").LabelFormat = "F1" 'Queda en el cálculo de la fórmula divido por 1000 y añadimos el primer decimal de las centenas.
    End sub

    Espero que esto te sirva para todos tus gráficos.

    Un cordial saludo.

    Gemma.


    • Editado gemma_campillo lunes, 4 de febrero de 2013 19:43 He cambiado en la respuesta unos valores.
    • Marcado como respuesta ferchorh9 martes, 12 de febrero de 2013 17:05
    lunes, 4 de febrero de 2013 19:40
  • Gracias Gemma eres una bella te lo agradezco muchisimo

    winckelman

    martes, 12 de febrero de 2013 17:05
  • Yo lo resolvi de esta manera:

    A mi personalmente me gustan que los valores se muestren en la barra, para ello
    Chart1.serie.IsValueShownAsLabel = true


    Si lo que quieres es que se vean los valores de X O y tendrás que cambiar
    Chart1.ChartAreas.Axes.IntervalAutoMode = VariableCount

    Si asi no lo ves lo mejor es que cambies el tamaño de la letra para que entren todos.
    Chart1.ChartAreas.Axes.Font --> poner letras más pequeñas.

    • Propuesto como respuesta Yilmer Tapias lunes, 24 de junio de 2019 3:33
    lunes, 27 de enero de 2014 9:17
  • He batallado bastante con este detalle

    lo he resuelto con esto: 

     grafDia.ChartAreas(0).AxisX.IntervalAutoMode = 1

    depende del display de la gráfica, en caso de que no funcione intenten con AxisY


    lunes, 13 de enero de 2020 5:30