Step 1: Set Up the Basic Plot
We’ll start by creating a simple scatter plot that we’ll customize
throughout this tutorial.
1. Create a Sample Dataset:
x
<-
c(1,
2,
3,
4,
5)
y
<-
c(10,
15,
13,
17,
20)
labels
<-
c("A",
"B",
"C",
"D",
"E")
2. Generate the Basic Scatter Plot:
library
(plotly
)
plot
<- plot_ly
(x
=
~x
, y
=
~y
, type
=
'scatter', mode
=
'markers')
plot
Step 2: Add Labels
You can add custom labels for each point to provide additional context.
1. Add Labels as Text:
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~labels
, type
=
'scatter', mode
=
'markers+text')
%>%
layout
(title
=
"Scatter Plot with Labels",
xaxis
=
list(title
=
"X Axis"),
yaxis
=
list(title
=
"Y Axis"))
plot
- Explanation:
text = ~labels
: Adds text labels from the labels
variable.
mode = 'markers+text'
: Displays both markers
and text.
2. Adjust Text Position:
plot
<- plot
%>%
layout
(title
=
"Scatter Plot with Custom Label Positions")
%>%
style
(textposition
=
'top right')
plot
Step 3: Add and Customize Hover Effects
Hover effects can be customized to display more detailed information.
1. Customize Hover Text:
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~paste
("Point:", labels
,
"<br>X:", x
,
"<br>Y:", y
),
hoverinfo
=
'text', type
=
'scatter', mode
=
'markers')
%>%
layout
(title
=
"Scatter Plot with Customized Hover Text")
plot
- Explanation:
hoverinfo = 'text'
: Specifies that hover text
should come from the text
argument.
paste()
function with <br>
: Adds HTML line breaks to format
the hover text neatly.
Step 4: Adjust Colors
Colors can make plots visually appealing and help convey information.
1. Change Marker Colors:
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~labels
, type
=
'scatter', mode
=
'markers',
marker
=
list(color
=
'blue', size
=
10))
%>%
layout
(title
=
"Scatter Plot with Custom Marker Color")
plot
2. Add Conditional Colors:
colors
<-
c("red",
"green",
"blue",
"orange",
"purple")
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~labels
, type
=
'scatter', mode
=
'markers',
marker
=
list(color
= colors
, size
=
10))
%>%
layout
(title
=
"Scatter Plot with Conditional Colors")
plot
3. Use a Color Gradient:
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~labels
, type
=
'scatter', mode
=
'markers',
marker
=
list(color
=
~y
, colorscale
=
'Viridis', size
=
10))
%>%
layout
(title
=
"Scatter Plot with Gradient Colors")
plot
Step 5: Customize Layout
plotly
offers extensive
layout options to adjust axes, titles, legends, and background.
1. Modify Title and Axis Titles:
plot
<- plot
%>%
layout
(title
=
list(text
=
"Customized Scatter Plot", font
=
list(size
=
20, color
=
"darkblue")),
xaxis
=
list(title
=
"Custom X Axis", titlefont
=
list(size
=
15, color
=
"darkred")),
yaxis
=
list(title
=
"Custom Y Axis", titlefont
=
list(size
=
15, color
=
"darkgreen")))
plot
2. Customize Legend:
plot
<- plot
%>%
layout
(showlegend
=
TRUE, legend
=
list(x
=
1, y
=
1, font
=
list(size
=
10, color
=
"black")))
plot
3. Change Background Color:
plot
<- plot
%>%
layout
(plot_bgcolor
=
'lightgrey',
paper_bgcolor
=
'lavender')
plot
Step 6: Combine All Customizations
Let’s put together everything we learned to create a fully customized scatter
plot.
plot
<- plot_ly
(x
=
~x
, y
=
~y
, text
=
~paste
("Label:", labels
,
"<br>X:", x
,
"<br>Y:", y
),
hoverinfo
=
'text', type
=
'scatter', mode
=
'markers+text',
marker
=
list(color
=
~y
, colorscale
=
'Viridis', size
=
15))
%>%
layout
(title
=
list(text
=
"Fully Customized Scatter Plot", font
=
list(size
=
22, color
=
"darkblue")),
xaxis
=
list(title
=
"Custom X Axis", titlefont
=
list(size
=
15, color
=
"darkred")),
yaxis
=
list(title
=
"Custom Y Axis", titlefont
=
list(size
=
15, color
=
"darkgreen")),
plot_bgcolor
=
'lightgrey',
paper_bgcolor
=
'lavender',
legend
=
list(x
=
1, y
=
1, font
=
list(size
=
10, color
=
"black")))
plot
Summary
Today, you:
- Added text
labels and customized their position.
- Created
hover text with detailed information and used HTML for formatting.
- Customized
colors, including conditional colors and gradients.
- Modified
layout elements such as titles, axis labels, background color, and legend
position.
Next, you’ll practice 3D plotting and explore deeper interactions to make
your plots even more dynamic.