Professional R & Julia plot visualization for VS Code
The ultimate visualization experience for VS Code. High-performance, real-time, and designed for professionals who demand the best of RStudio, Positron, and Julia.
Tired of switching between VS Code and external windows just to see your plots? R Plot Pro brings the familiar RStudio Plots pane, Positron's modern experience, and traceless Julia plotting directly into VS Code.
- ✅ R Support - Works with Base R and ggplot2.
- ✅ Julia Support - Works with CairoMakie and Plots.jl.
- ✅ Side panel plot viewer - Opens in the right sidebar, just like RStudio.
- ✅ Automatic plot capture - Every plot you create appears instantly.
- ✅ Universal Capture Engine - Supports both Base R and ggplot2 automatically.
- ✅ Silent Professional Stealth - Zero initialization trace with Internal Mirror technology.
- ✅ Invisible Background Rendering - No more focus-stealing external windows (Quartz/X11).
- ✅ Native Banner Preservation - 100% preservation of R and Julia startup logos.
No more context switching! Work in VS Code with the plotting power of RStudio and the elegance of Positron.
To get the most out of R Plot Pro, please ensure your environment is set up correctly.
- R Installation: Download from CRAN.
- VS Code Extension: Install vscode-R (Required dependency).
- Initialization: R Plot Pro attaches automatically to any terminal running an R session.
- Julia Installation: We recommend using Juliaup for easy version management.
- VS Code Extension: Install the official Julia extension (Automatic dependency).
- Core Packages: Ensure you have a supported plotting backend installed:
using Pkg Pkg.add(["CairoMakie", "Plots"]) # Choose your preferred backend
For the best experience, we recommend adding Julia/R as custom terminal profiles.
Add this to your settings.json:
"terminal.integrated.profiles.osx": {
"Julia": {
"path": "julia",
"icon": "terminal-julia"
}
}"terminal.integrated.profiles.windows": {
"Julia": {
"path": "julia.exe",
"icon": "terminal-julia"
}
}R Plot Pro features a Continuous Sentinel that scans your integrated terminals every 4 seconds. It looks for the following keywords to trigger the silent attachment:
| Language | Keywords (Regex) |
|---|---|
| R | r, r.exe, rterm, R Interactive |
| Julia | julia, julialauncher, julia.exe |
Note: On Mac/Linux, if you open a
zshorbashterminal and then typejulia, the Sentinel will detect the name change and attach automatically within seconds.
-
Install from Marketplace:
ext install ofurkancoban.r-plot-pro -
Or install manually:
- Download the
.vsixfile - Run:
code --install-extension r-plot-pro-0.40.0.vsix
- Download the
- Open an R or Julia file in VS Code
- Run code in the integrated terminal
- Plot viewer opens automatically when you create your first plot
- The viewer stays open and updates in real-time as you create more plots
- Start plotting! 🎉
💡 Tip: The plot viewer appears as a sidebar panel (like RStudio's Plots pane), keeping your code visible while you explore visualizations. You can drag it to any position or open it manually with
View > Open View > R Plot Viewer.
# Create a plot - viewer opens automatically (R)
library(ggplot2)
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_point(color = "steelblue", size = 3) +
theme_minimal()# Create a plot - viewer opens automatically (Julia)
using CairoMakie
f = Figure()
ax = Axis(f[1, 1], title = "Makie in VS Code")
lines!(ax, 1:10, rand(10))
f # Plot is captured instantly| Shortcut | Action |
|---|---|
Cmd/Ctrl + → |
Next plot |
Cmd/Ctrl + ← |
Previous plot |
Space |
Toggle fullscreen |
Esc |
Exit fullscreen |
Top Toolbar:
- Navigation - Previous/Next plot buttons
- Zoom - 50%, 75%, 100%, 150%, 200%, Fit
- Layout - Aspect ratio control (auto, square, landscape, portrait, fill)
- Clear All - Remove all plots
Plot Thumbnail Actions:
- Click - View plot
- Star icon - Mark as favorite
- Note icon - Add/edit note
- Delete icon - Remove plot
- Drag - Reorder or export
- VS Code 1.85.0 or higher
- R 4.0.0 or higher (for R users)
- Julia 1.9.0 or higher (for Julia users)
- Automatically keeps last 200 plots
- Oldest plots removed when limit reached
- Optimized memory usage (~100MB for 200 plots)
- Drag-and-drop to desktop (saves as PNG)
- High-resolution output
- Preserves aspect ratio
- Add notes to any plot
- Notes saved in VS Code state
- Perfect for documenting analysis steps
- Star important plots
- Filter view to show only favorites
- Never lose track of key visualizations
Quickly iterate through different visualizations while keeping a history of all attempts.
Mark your best plots as favorites, add notes, and easily export for slides.
Document your plotting process with notes for team members.
Show students the progression of plot improvements with before/after comparisons.
This extension works out of the box with no configuration needed. Advanced users can modify:
- Plot server port (default: auto-assigned)
- Maximum plots to keep (default: 200)
- Auto-open viewer (default: true)
- Plots created in background R sessions may not appear (must use VS Code terminal)
- Very large plots (>10MB) may render slowly
- Some R graphics devices may not be captured
The "Master Fix" for Professional R Workflows
- Universal Plot Capture: Re-enabled and optimized throttled task callbacks. Now captures ALL plot types (Base R, Lattice, Maps) in addition to ggplot2.
- Invisible Background Rendering: Implemented a non-focus-stealing PDF null device. No more external OS windows (Quartz on Mac, X11 on Linux) popping up during analysis.
- GIS & Heavy Data Optimization: Specifically tuned for memory-intensive packages like
terra,sf, andblackmarbler. - Manual Capture Helper: Added
.vsc_rplot$capture()command to manually force a plot refresh in the webview. - Robust ggplot2 Tracing: Fixed a namespace conflict that prevented ggplot2 capture in some environments.
- Performance Throttling: Smart 500ms refresh window to prevent UI freezing during rapid plotting.
Branding Separation & Dynamic Metrics Integration
- Registry Distinction: Overhauled the README header to clearly separate the Visual Studio Marketplace and Open VSX Registry platforms.
- Dynamic Metrics: Integrated live download counts from Open VSX, providing real-time adoption metrics.
- Stable Marketplace Display: Implemented high-reliability static badges for the VS Code Marketplace to bypass the retired dynamic Shields.io API.
- Layout Modernization: Reorganized the registry links into a clean, professional table for easier access and clarity.
Professional Documentation & Dependency Overhaul
- Ecosystem Integration: Added
julialang.language-juliaas a formal extension dependency to ensure a seamless out-of-the-box experience for Julia users. - Comprehensive Onboarding: Redesigned the README with a detailed "Setup & Installation" guide covering R (Base, vscode-R) and Julia (Juliaup, Makie, Plots.jl).
- Terminal Profile Guide: Added a dedicated section explaining how to configure Julia/R as custom VS Code terminal profiles for maximum efficiency.
- Sentinel Transparency: Detailed the technical logic behind the "Continuous Sentinel" system, explaining which keywords trigger the automatic attachment.
- Badge Update: Modernized marketplace and license badges for a premium professional appearance.
The Ultimate Stealth & Banner Preservation Update
- Internal Surgical Wipe: Relocated the ANSI wipe logic directly into the
init.Randinit.jlbootstrap scripts. - 100% Banner Integrity: Eliminated the "Banner Clipping" issue by using internal process-aware cleanup. Native R/Julia logos and help text now remain perfectly intact.
- Nano-Path Optimization: Switched to system-level short paths (
/tmp) on Unix systems to minimize command length and prevent terminal wrapping. - Conflict Resolution: Fixed a logic bug where R terminals could accidentally trigger Julia injection.
The Biggest Update Yet!
- Full Julia Support: Seamlessly integrate Julia plotting into your VS Code workflow.
- Supports CairoMakie and Plots.jl (GR).
- Intercepts all
display()calls to route plots directly to the extension. - Suppresses external PNG/SVG windows for a distraction-free experience.
- Nuclear Stealth Mode:
- Trace-free terminal initialization for both R and Julia.
- Automatically wipes the
source()orinclude()command from the terminal buffer using advanced ANSI sequences. - Works even on narrow terminals with wrapped paths (up to 6 lines cleared).
- Silent Operation: All diagnostic logs and server-starting messages are now hidden by default for a clean terminal experience.
- Initial support for Julia language.
- WebSocket-based real-time communication.
New Features:
- Perfect Static Wait: Fixed the issue where color swatches would shrink on hover-off. Now the entire palette remains 100% static for the 2-second delay.
- Flex-Stable Layout: Added
flex-shrink: 0to internal components to prevent any sub-pixel layout shifts during the transition wait. - Synchronized Fading: Color buttons now fade out in perfect sync with the toolbar frame.
New Features:
- Zero-Shrink Delay: Synchronized every internal property (margins, handle size, button widths) to ensure the toolbar remains absolutely stationary for the full 2-second buffer.
- Perfect Sync: All components now collapse simultaneously without intermediate "staged" or "half-shrunk" visual states.
- Improved UI Stability: No more "ghost shrinking" on hover-off; the toolbar stays fully expanded until the count-down is complete.
New Features:
- Zero-Bounce Animation: Replaced the bouncy transition with a smooth
ease-in-outfor a more professional and stable feel. - Unified Collapse: Synchronized child elements (buttons, separators, etc.) with the parent's closing duration for a clean, non-staged closing experience.
- Smooth Buffer: Maintained the 2-second collapse delay while ensuring the transition itself is seamless and fast when it triggers.
New Features:
- Rock-Solid Collapse Delay: Transitioned to
max-width/max-heightlogic to ensure the 2-second closing delay is perfectly respected by the browser. - Zero-Lag Dragging: Position updates (
left/top) now have no delay, ensuring the toolbar follows your mouse instantly while maintaining the collapse buffer. - UI Refinement: Further improved the symmetry of the collapsed "pill" state for a cleaner first impression.
New Features:
- Equilateral Arrow Heads: Redesigned the arrow geometry to form a perfect 60-degree equilateral triangle for a balanced, professional look.
- Selective Transition Delays: Position updates (dragging) are now instantaneous, while the size collapse maintains the 2-second buffer delay.
- Refined Horizontal Handle: The horizontal drag handle now features a clearer 6-dot icon (
⠿).
New Features:
- Transition Delay: The annotation bar now waits for 2 seconds before collapsing, preventing accidental closures.
- Stable Dragging: The toolbar remains fully expanded and stable while being moved, eliminating flickering.
- Pixel-Perfect Centering: Refined the collapsed state to ensure the active tool is perfectly centered in a clean circular frame.
New Features:
- Perfect Symmetry: The annotation palette is now a perfect circle when collapsed, with the active icon precisely centered.
- Ultra-Sharp Arrows: Redesigned arrow geometry and line-end calculations for perfectly pointy and professional tips.
- Enhanced Visibility: Drag handle "dots" are now bolder and clearer when the palette is expanded.
New Features:
- Auto-Expanding Palette: The annotation bar now stays collapsed, showing only the active tool, and unfolds elegantly when hovered.
- Improved Arrow Geometry: Significantly sharper and more professional arrow heads for clearer annotations.
- Enhanced Positioning: Horizontal layout and top-left alignment by default for new users.
New Features:
- Dynamic Annotation Palette:
- Draggable: Move the toolbar anywhere in the plot area via the new drag handle.
- Orientation Toggle: Switch between horizontal and vertical layouts.
- Auto-Scaling: The palette automatically shrinks on smaller screens to maximize plot visibility.
- Persistent State: Saves your preferred position and orientation.
New Features:
- Enhanced Split View:
- Side-by-Side Export: Saving or copying in split mode now captures both plots combined.
- Real-time Resizing: Draggable splitter with smooth plot resizing.
- Improved Labels: Plot indicators remain visible during interaction.
- Annotations: Draw and highlight directly on plots before exporting.
- UI Refinements:
- Dark Mode: Now uses pure black (
#000000) for seamless integration with inverted plots. - Sidebar: Thumbnails panel opens by default for instant access.
- Startup: Extension defaults to Light Mode for better initial visibility.
- Dark Mode: Now uses pure black (
- Performance:
- Optimized resize events and memory usage.
- Fixed "No Plot" screen transitions.
Features:
- Real-time plot visualization
- Advanced plot gallery with thumbnails
- Favorites and notes system
- Drag-and-drop export
- Multiple zoom and aspect ratio options
- Dark mode support
Bug Fixes:
- Fixed WebSocket timing issues
- Improved error handling
- Optimized resize events
If you find R Plot Pro useful, consider supporting its development!
MIT License - feel free to use in your projects!
Contributions are welcome! Please feel free to submit a Pull Request.
Enjoy plotting! 📊✨