Reputation: 91
I'm trying to customise the x-axis. I currently have the "Site" variable on the x-axis. The range is from 15 to 24 with site a and b for each number i.e. for 15, there is 15a and b (and so on to 24). When I label all bars, it looks messy and I'm trying to customise it so for example, the number 15 is below but the individual bars are labelled a and b. This way, the individual bars will be identifiable but it won't look so crowded.
Here is my code so far:
#Stacked bar chart exp2
BarChartData2 <- read.csv("Bar chart data exp 2.csv")
Site <- BarChartData2[,4]
Card <- BarChartData2[,2]
Pen <- BarChartData2[,3]
data2 <- data.frame(Site, Card, Pen)
pstacked2 <- plot_ly(data2, x = ~Site, y = ~Card, type = 'bar', name = 'Card', marker = list(color = 'Black')) %>%
add_trace(y = ~Pen, name = 'Pen', marker = list(color = 'red')) %>%
layout(yaxis = list(title = 'Number of Bee Visits'), barmode = 'stack', font = list(family = 'Times New Roman', size =14, color ="black"), xaxis = list(autotick = F, dtick = 2))
pstacked2
Any help/other ideas of how to do this will be much appreciated!
Upvotes: 1
Views: 2913
Reputation: 9876
Here is something to help you. You can play with shapes
and annotations
to get exatly what you want.
plot_ly(data2, x = ~Site, y = ~Card, type = 'bar', name = 'Card', marker = list(color = 'Black')) %>%
add_trace(y = ~Pen, name = 'Pen', marker = list(color = 'red')) %>%
layout(yaxis = list(title = 'Number of Bee Visits'),
barmode = 'stack',
font = list(family = 'Times New Roman', size =14, color ="black"),
xaxis = list(autotick = F, dtick = 2),
margin = list(
r = 10,
t = 25,
b = 100,
l = 110
),
shapes = list(
list(
line = list(
color = "rgba(68, 68, 68, 0.5)",
width = 1
),
type = "line",
x0 = 0,
x1 = 1,
xref = "paper",
y0 = -0.05,
y1 = -0.05,
yref = "paper"
)
),
annotations = list(
list(
x = 0.04,
y = -0.1,
showarrow = FALSE,
text = "15",
xref = "paper",
yref = "paper"
),
list(
x = 0.14,
y = -0.1,
showarrow = FALSE,
text = "16",
xref = "paper",
yref = "paper"
),
list(
x = 0.24,
y = -0.1,
showarrow = FALSE,
text = "17",
xref = "paper",
yref = "paper"
),
list(
x = .35,
y = -0.1,
showarrow = FALSE,
text = "18",
xref = "paper",
yref = "paper"
),
list(
x = .45,
y = -0.1,
showarrow = FALSE,
text = "19",
xref = "paper",
yref = "paper"
),
list(
x = .55,
y = -0.1,
showarrow = FALSE,
text = "20",
xref = "paper",
yref = "paper"
),
list(
x = .65,
y = -0.1,
showarrow = FALSE,
text = "21",
xref = "paper",
yref = "paper"
),
list(
x = .75,
y = -0.1,
showarrow = FALSE,
text = "22",
xref = "paper",
yref = "paper"
),
list(
x = .85,
y = -0.1,
showarrow = FALSE,
text = "23",
xref = "paper",
yref = "paper"
),
list(
x = .95,
y = -0.1,
showarrow = FALSE,
text = "24",
xref = "paper",
yref = "paper"
)
)
)
Upvotes: 2