[R-es] Ayuda con gráfico típico de histograma más linea

Ruben Tobalina Ramirez lagrimaescrita en gmail.com
Sab Sep 3 18:14:50 CEST 2016


Buenas tardes!

uau! Muchas gracias!! He estado trabajando esta mañana y no he podido
responder antes, aunque esta madrugada antes de ir a currar los he probado.
Es sorprende como R saca de quicio, probé tus scripts con el csv que mandé
y va perfecto. Luego pruebo con mis datos - haciendo los cambios
correspondientes - y R me fusila a errores:D

De hecho el segundo gráfico - el del share - no sale con los consiguientes
errores -dependiendo la la variable que use (Share o miles):



*Error: Discrete value supplied to continuous scalegeom_path: Each group
consists of only one observation. Do you need to adjust the groupaesthetic?*

Modifique el código tal que así:

ggbar<-ggplot(ft, aes(x=ft$hora, y=ft$frec)) +
  geom_bar(stat="identity", width = 0.8, fill="gray") +
  theme(panel.background = element_rect(fill = "white")) +
  scale_y_continuous(limits=c(0,1500))
ggline<-ggplot(ft, aes(x=ft$hora, y=ft$Miles)) +
  geom_line()+
  theme(panel.background = element_rect(fill = "white")) +
  scale_y_continuous(limits=c(0,1500))

library(gridExtra)
grid.arrange(ggbar, ggline, nrow=2, ncol=1)

No entendí muy bien por qué no indicabas en el eje x las horas. Entiendo
que esta hecho a propósito, y por eso supongo que me da el primer error,
pero no entiendo porque. Gráficando por ejemplo los tweets no hay problema:
[image: Imágenes integradas 2]

Por cierto, hay alguna forma que no sea poniendo "a mano" como indicabas en
el correo, de poner los minutos más claro, a lo mejor de 5 en 5, o algo así?

Un saludo!


El 3 de septiembre de 2016, 0:12, Carlos Ortega <cof en qualityexcellence.es>
escribió:

> Y bueno, algo más bonito sí que queda con ggplot...
>
> #---------------
> datIn <- read.csv("pec.csv", header = TRUE, sep = ";", dec = ",")
>
> library(ggplot2)
> lab_x_idx <- c(1, round(nrow(datIn)/2, 0), nrow(datIn))
> lab_x <- as.vector(datIn$hora[ lab_x_idx])
> fre_gg <- ggplot( datIn, aes( x = 1:nrow(datIn),   y = frec)) +
>              geom_bar(stat = "identity") +
>              xlab(paste("Rango horas: ", datIn$hora[1], "-",
> datIn$hora[nrow(datIn)], sep = "") ) +
>              ylab("Frecuencia") +
>              scale_x_continuous( breaks = lab_x_idx, labels = lab_x ) +
>              theme_minimal()
> sha_gg <- ggplot( datIn , aes(x = 1:nrow(datIn), y = Share)) +
>                  geom_line() +
>                  xlab(paste("Rango horas: ", datIn$hora[1], "-",
> datIn$hora[nrow(datIn)], sep = "") ) +
>                  ylab("Share") +
>                  ylim(0, max(datIn$Share)*1.10) +
>                  scale_x_continuous( breaks = lab_x_idx, labels = lab_x )
> +
>                  theme_minimal()
> library(gridExtra)
> grid.arrange(fre_gg, sha_gg, nrow=2, ncol=1)
>
> #---------------
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
> El 2 de septiembre de 2016, 21:47, Carlos Ortega <cof en qualityexcellence.es
> > escribió:
>
>> Hola,
>>
>> Aproximación muy sencillita...con gráficos "base":
>>
>> #-----------------
>>
>> datIn <- read.csv("pec.csv", header = TRUE, sep = ";", dec = ",")
>>
>> par(mfrow = c(2,1))
>> barplot(
>>           datIn$frec
>>          ,las = 1
>>          ,col = "green"
>>          ,cex.axis = 0.7, col.axis = "red", font.axis = 2
>>          ,main = "Frequency"
>>         )
>> box()
>> plot(
>>       datIn$Share
>>      ,type = "b"
>>      ,col = "blue", bg = "blue", col.axis = "red", font.axis = 2
>>      ,cex = 0.7
>>      ,cex.axis = 0.7
>>      ,las = 1
>>      ,main = "Share", ylab = "", xlab = ""
>>      ,ylim = c(0, 1.10*max(datIn$Share))
>>     )
>>
>> #-----------------
>>
>> Yo haría la representación por separado, mejor que un gráfico con doble
>> eje.
>> Pero si quieres hacer un gráfico de doble eje:
>> http://ellisp.github.io/blog/2016/08/28/dualaxes2
>>
>> Y como referencia para hacer gráficos (en español):
>> https://www.amazon.es/Gráficos-Estadísticos-Castor-Guisande-
>> González/dp/8499692117/ref=sr_1_1?ie=UTF8&qid=1472845192&sr=
>> 8-1&keywords=graficos+en+R
>> <https://www.amazon.es/Gr%C3%A1ficos-Estad%C3%ADsticos-Castor-Guisande-Gonz%C3%A1lez/dp/8499692117/ref=sr_1_1?ie=UTF8&qid=1472845192&sr=8-1&keywords=graficos+en+R>
>>
>> Nota: Si quieres incluir las horas minutos en el eje "X" de cualquiera de
>> los dos gráficos:
>> http://stackoverflow.com/questions/5182238/r-replace-x-axis-
>> with-own-values
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> El 2 de septiembre de 2016, 20:25, Ruben Tobalina Ramirez <
>> lagrimaescrita en gmail.com> escribió:
>>
>>> Buenas tardes,
>>>
>>> Tengo una duda con gráficos. Estoy intentando realizar el típico gráfico
>>> de una variable en histograma y otra en linea, supongo que será sencillo
>>> pero llevo unos días peleando y no me sale de forma correcta.
>>>
>>> Las variables están en un dataframe que muestran las frecuencias de
>>> tweets minuto a minuto y el share de esos minutos (os adjunto un archivo en
>>> csv con el dataframe).
>>>
>>> Una muestra del data frame:
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *   hora frec Miles Share  1 20:22   87 1.016
>>> 13,0
>>> 2 20:23  123 1.031  13,33 20:24  153 1.048  13,5  4 20:25  192 1.165  15,0
>>> 5 20:26  175 1.239  15,8 6 20:27  225 1.331  17,0    *
>>>
>>> He probado con *plot* y el parámetro *new* sin éxito, y ahora estaba
>>> probando con *ggplot*:
>>>
>>>
>>>
>>> *ggplot(ft, aes(ft[,2:3])) +   geom_bar(aes(ft[,2]), colour="black",
>>> fill = "orange") +   geom_line(aes(x=ft$hora,y=ft[,3]), colour="black") *
>>>
>>> Se me muestran las variables pero de forma incorrecta. ¿Alguna
>>> sugerencia?
>>> De paso, me podéis indicar algún manual para aprender a realizar
>>> gráficos con R?
>>>
>>> Muchas gracias!
>>>
>>> Un saludo!!!
>>>
>>>
>>> --
>>> Rubén.
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
Rubén.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160903/5b125cbe/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 16429 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160903/5b125cbe/attachment-0001.png>


Más información sobre la lista de distribución R-help-es