Introducció
En aquest estudi de cas, aplicarem els coneixements adquirits sobre visualització de dades per analitzar un conjunt de dades real. Utilitzarem les eines i tècniques apreses en els mòduls anteriors per crear visualitzacions informatives i atractives que ens ajudin a comprendre millor les dades.
Objectius
- Importar i explorar el conjunt de dades.
- Crear visualitzacions bàsiques i avançades utilitzant
ggplot2. - Generar visualitzacions interactives amb
plotly. - Interpretar les visualitzacions per extreure conclusions significatives.
Conjunt de Dades
Per aquest estudi de cas, utilitzarem el conjunt de dades diamonds del paquet ggplot2, que conté informació sobre més de 50.000 diamants, incloent-hi el carat, el tall, el color, la claredat, el preu, entre altres característiques.
Passos a Seguir
- Importar i Explorar el Conjunt de Dades
Primer, importarem el conjunt de dades i farem una exploració inicial per comprendre la seva estructura i contingut.
# Carregar els paquets necessaris
library(ggplot2)
library(dplyr)
library(plotly)
# Carregar el conjunt de dades
data("diamonds")
# Exploració inicial
head(diamonds)
summary(diamonds)Explicació:
library(ggplot2),library(dplyr),library(plotly): Carreguem els paquets necessaris.data("diamonds"): Carreguem el conjunt de dadesdiamonds.head(diamonds): Mostrem les primeres files del conjunt de dades.summary(diamonds): Proporcionem un resum estadístic de les variables del conjunt de dades.
- Crear Visualitzacions Bàsiques amb
ggplot2
ggplot2Histogram de Preus
# Histogram de preus ggplot(diamonds, aes(x = price)) + geom_histogram(binwidth = 500, fill = "blue", color = "black") + labs(title = "Distribució de Preus dels Diamants", x = "Preu", y = "Compte")
Explicació:
ggplot(diamonds, aes(x = price)): Inicialitzem el gràfic amb el conjunt de dadesdiamondsi especifiquem que la variablepriceserà l'eix X.geom_histogram(binwidth = 500, fill = "blue", color = "black"): Creem un histogram amb una amplada de bin de 500, color de farciment blau i contorn negre.labs(title = "Distribució de Preus dels Diamants", x = "Preu", y = "Compte"): Afegim títol i etiquetes als eixos.
Gràfic de Dispersió de Carat vs. Preu
# Gràfic de dispersió de carat vs. preu ggplot(diamonds, aes(x = carat, y = price)) + geom_point(alpha = 0.5, color = "darkgreen") + labs(title = "Carat vs. Preu dels Diamants", x = "Carat", y = "Preu")
Explicació:
ggplot(diamonds, aes(x = carat, y = price)): Inicialitzem el gràfic amb el conjunt de dadesdiamondsi especifiquem que les variablescaratipriceseran els eixos X i Y respectivament.geom_point(alpha = 0.5, color = "darkgreen"): Creem un gràfic de dispersió amb punts de color verd fosc i una transparència del 50%.labs(title = "Carat vs. Preu dels Diamants", x = "Carat", y = "Preu"): Afegim títol i etiquetes als eixos.
- Crear Visualitzacions Avançades amb
ggplot2
ggplot2Boxplot de Preu per Tall
# Boxplot de preu per tall ggplot(diamonds, aes(x = cut, y = price, fill = cut)) + geom_boxplot() + labs(title = "Preu dels Diamants per Tall", x = "Tall", y = "Preu") + theme(legend.position = "none")
Explicació:
ggplot(diamonds, aes(x = cut, y = price, fill = cut)): Inicialitzem el gràfic amb el conjunt de dadesdiamondsi especifiquem que les variablescutipriceseran els eixos X i Y respectivament, i que el color de farciment serà segons el tall.geom_boxplot(): Creem un boxplot.labs(title = "Preu dels Diamants per Tall", x = "Tall", y = "Preu"): Afegim títol i etiquetes als eixos.theme(legend.position = "none"): Eliminem la llegenda.
Gràfic de Barres Apilat de Color per Tall
# Gràfic de barres apilat de color per tall ggplot(diamonds, aes(x = cut, fill = color)) + geom_bar(position = "fill") + labs(title = "Distribució de Color per Tall", x = "Tall", y = "Proporció") + scale_y_continuous(labels = scales::percent)
Explicació:
ggplot(diamonds, aes(x = cut, fill = color)): Inicialitzem el gràfic amb el conjunt de dadesdiamondsi especifiquem que la variablecutserà l'eix X i el color de farciment serà segons el color.geom_bar(position = "fill"): Creem un gràfic de barres apilat.labs(title = "Distribució de Color per Tall", x = "Tall", y = "Proporció"): Afegim títol i etiquetes als eixos.scale_y_continuous(labels = scales::percent): Convertim l'eix Y a percentatges.
- Generar Visualitzacions Interactives amb
plotly
plotlyGràfic de Dispersió Interactiu
# Gràfic de dispersió interactiu
p <- ggplot(diamonds, aes(x = carat, y = price, text = paste("Color:", color))) +
geom_point(alpha = 0.5, color = "darkgreen") +
labs(title = "Carat vs. Preu dels Diamants", x = "Carat", y = "Preu")
ggplotly(p)Explicació:
ggplot(diamonds, aes(x = carat, y = price, text = paste("Color:", color))): Inicialitzem el gràfic amb el conjunt de dadesdiamondsi especifiquem que les variablescaratipriceseran els eixos X i Y respectivament, i afegim una etiqueta de text amb el color.geom_point(alpha = 0.5, color = "darkgreen"): Creem un gràfic de dispersió amb punts de color verd fosc i una transparència del 50%.labs(title = "Carat vs. Preu dels Diamants", x = "Carat", y = "Preu"): Afegim títol i etiquetes als eixos.ggplotly(p): Convertim el gràficggplot2en un gràfic interactiu ambplotly.
- Interpretació de les Visualitzacions
- Distribució de Preus dels Diamants: L'histogram mostra que la majoria dels diamants tenen un preu inferior a 5000 dòlars, amb una distribució asimètrica cap a la dreta.
- Carat vs. Preu dels Diamants: El gràfic de dispersió indica una relació positiva entre el carat i el preu, és a dir, a mesura que augmenta el carat, també ho fa el preu.
- Preu dels Diamants per Tall: El boxplot revela que els diamants amb tall "Ideal" tendeixen a tenir preus més alts, mentre que els de tall "Fair" tenen preus més baixos.
- Distribució de Color per Tall: El gràfic de barres apilat mostra que els talls "Ideal" i "Premium" tenen una major proporció de diamants amb colors més clars (D, E, F).
Exercicis Pràctics
- Crear un gràfic de dispersió de
depthvs.pricei afegir una línia de regressió. - Generar un gràfic de barres de la distribució de
clarityi interpretar els resultats. - Crear una visualització interactiva que mostri la relació entre
carat,priceicut.
Solucions
Exercici 1
# Gràfic de dispersió de depth vs. price amb línia de regressió ggplot(diamonds, aes(x = depth, y = price)) + geom_point(alpha = 0.5, color = "purple") + geom_smooth(method = "lm", color = "red") + labs(title = "Depth vs. Preu dels Diamants", x = "Depth", y = "Preu")
Exercici 2
# Gràfic de barres de la distribució de clarity ggplot(diamonds, aes(x = clarity)) + geom_bar(fill = "orange", color = "black") + labs(title = "Distribució de Clarity dels Diamants", x = "Clarity", y = "Compte")
Exercici 3
# Visualització interactiva de carat, price i cut
p <- ggplot(diamonds, aes(x = carat, y = price, color = cut, text = paste("Cut:", cut))) +
geom_point(alpha = 0.5) +
labs(title = "Carat vs. Preu dels Diamants per Tall", x = "Carat", y = "Preu")
ggplotly(p)Conclusió
En aquest estudi de cas, hem aplicat diverses tècniques de visualització de dades per analitzar el conjunt de dades diamonds. Hem creat visualitzacions bàsiques i avançades amb ggplot2 i visualitzacions interactives amb plotly. Aquestes visualitzacions ens han permès extreure conclusions significatives sobre les característiques i els preus dels diamants. Ara estàs preparat per aplicar aquestes tècniques a altres conjunts de dades i projectes.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres
