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

Ruben Tobalina Ramirez lagrimaescrita en gmail.com
Sab Sep 3 23:52:55 CEST 2016


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/872cb828/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/872cb828/attachment-0001.png>


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