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
ggplot2
Histogram 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 dadesdiamonds
i especifiquem que la variableprice
serà 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 dadesdiamonds
i especifiquem que les variablescarat
iprice
seran 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
ggplot2
Boxplot 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 dadesdiamonds
i especifiquem que les variablescut
iprice
seran 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 dadesdiamonds
i especifiquem que la variablecut
serà 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
plotly
Grà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 dadesdiamonds
i especifiquem que les variablescarat
iprice
seran 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àficggplot2
en 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
depth
vs.price
i afegir una línia de regressió. - Generar un gràfic de barres de la distribució de
clarity
i interpretar els resultats. - Crear una visualització interactiva que mostri la relació entre
carat
,price
icut
.
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