#1 India's Top IT Training Institute

×

About Uncodemy

Know more about who we are and what we stand for.

About Us

About Us

Discover our mission to equip individuals with essential IT skills and industry expertise.

Read More →
UnCodeMy Gallery

UnCodeMy Gallery

Explore highlights from our IT training sessions and success stories.

Read More →
×

Free Resources

Learn, practice and plan your career — bilkul free.

Tutorials

Tutorials

Step-by-step written tutorials to learn any technology at your own pace.

Read More →
Free Counselling

Free Counselling

Book a free video counselling session and pick the right course for you.

Read More →
Online Compiler

Online Compiler

Write, run and test your code online — no setup required.

Read More →
Visualization

Advanced Visualizations with ggplot2

ggplot2 is R's most celebrated visualization package, based on the "Grammar of Graphics" — a layered approach where you build charts piece by piece: data, aesthetics, geometries, and themes.

Production Reality: ggplot2 is part of the tidyverse and expects tidy (long-format) data — revisit the tidyr lesson if your data is still in wide format.

1. The Grammar of Graphics — Core Structure

library(ggplot2)

ggplot(data = df, aes(x = age, y = salary)) +
  geom_point()

Every ggplot2 chart follows this pattern: ggplot(data, aes(...)) + geom_*() — data, aesthetic mappings, and one or more geometry layers, joined with +.

2. Aesthetics (aes) — Mapping Data to Visuals

ggplot(df, aes(x = age, y = salary, color = department, size = experience)) +
  geom_point(alpha = 0.7)

Aesthetics map data columns to visual properties: x/y position, color, size, shape, and transparency (alpha).

3. Common Geometry Layers

GeomChart Type
geom_point()Scatter plot
geom_line()Line chart
geom_bar() / geom_col()Bar chart
geom_histogram()Histogram
geom_boxplot()Boxplot
geom_smooth()Trend line / regression fit
ggplot(df, aes(x = department, y = salary)) +
  geom_boxplot(fill = "lightblue") +
  labs(title = "Salary Distribution by Department")

4. Adding Layers

ggplot(df, aes(x = age, y = salary)) +
  geom_point(color = "steelblue") +
  geom_smooth(method = "lm", se = TRUE, color = "red") +
  labs(title = "Age vs Salary with Trend Line",
       x = "Age", y = "Salary ($)")

5. Themes — Controlling the Overall Look

ggplot(df, aes(x = department, fill = department)) +
  geom_bar() +
  theme_minimal() +
  theme(legend.position = "none",
        plot.title = element_text(face = "bold", size = 14)) +
  labs(title = "Employee Count by Department")
Built-in ThemeStyle
theme_minimal()Clean, minimal gridlines
theme_classic()Classic axis lines, no gridlines
theme_bw()White background, black-and-white
theme_void()No axes or gridlines at all

6. Faceting — Small Multiples

facet_wrap() and facet_grid() split a single chart into a grid of subplots by category — extremely powerful for comparisons:

ggplot(df, aes(x = age, y = salary)) +
  geom_point() +
  facet_wrap(~ department) +
  labs(title = "Age vs Salary by Department")

7. Saving ggplot2 Charts

ggsave("output/salary_by_dept.png", width = 8, height = 5, dpi = 300)
Pro Tip: ggsave() automatically saves the last plot you rendered, and infers the file format from the extension (.png, .pdf, .svg, etc.).

8. Production-Ready Checklist

  • ✅ Understand the layered grammar — data + aes + geoms + theme.
  • ✅ Choose the right geom — for the story your data tells.
  • ✅ Use facet_wrap() for comparisons — across categories in one figure.
  • ✅ Apply a consistent theme — for publication-ready output.
Pro Tip: ggplot2's learning curve pays off fast — once you know the grammar, building a completely new chart type is just swapping one geom for another.

Ready to master R Programming?

Build real-world data analysis and visualization projects with hands-on training, mentor-led sessions, and placement support.

Explore Course