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.