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

Carlos J. Gil Bellosta cgb en datanalytics.com
Sab Sep 3 23:55:55 CEST 2016


Sí, la primera reunión de la temporada será el 8 de este mes.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El 3 de septiembre de 2016, 23:52, Ruben Tobalina Ramirez <
lagrimaescrita en gmail.com> escribió:

> Muchas gracias a todos!
>
> Pues si, Eric, R a veces me vuelve loco, tiene una lógica muy particular.
> Miraré el libro, que lattice no lo he usado nunca.
>
> Gracias Carlos, con tu ejemplo creo que he conseguido hacer el grafico que
> queria.
>
> Muchas gracias! Os debo una caña un dia de estos - a los madrileños- en
> las reuniones de Medialab. Este año os seguireis reuniendo en Medialab?
>
> Un abrazo!
> Prueba algo así:
>
> library(ggplot2)
>
> datos <- read.table("Downloads/pec.csv", header = T, sep = ";", dec = ",")
> datos$Miles <- as.numeric(gsub("\\.", "", as.character(datos$Miles)))
>
> datos$hora <- strptime(datos$hora, format = "%H:%M")
>
> ggplot(datos, aes(x = hora, y = Miles)) + geom_line() +
>   scale_x_datetime(date_breaks = "15 mins", date_labels = "%H:%M")
>
>
> Además, en aes no hay que hacer referencia a la tabla. Expresiones como
>
> ggplot(datos, aes(x = datos$hora, y = datos$Miles)) + ...
>
> son innecesariamente redundantes.
>
> Salud,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
> El 3 de septiembre de 2016, 18:14, Ruben Tobalina Ramirez <
> lagrimaescrita en gmail.com> escribió:
>
>> 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.
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160903/f6e190cc/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/f6e190cc/attachment-0001.png>


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