Skip to content

Commit 3463714

Browse files
committed
Merge branch 'master' of github.com:ropensci/plotly
Conflicts: .gitignore run_tests_with_outputs.R tests/testthat/test-ggplot-abline-ggplot2.png tests/testthat/test-ggplot-abline-plotly.png tests/testthat/test-ggplot-area-ggplot2.png tests/testthat/test-ggplot-area-plotly.png tests/testthat/test-ggplot-bar-category-names-ggplot2.png tests/testthat/test-ggplot-bar-dates-ggplot2.png tests/testthat/test-ggplot-bar-dates-plotly.png tests/testthat/test-ggplot-bar-dodge-ggplot2.png tests/testthat/test-ggplot-bar-dodge-plotly.png tests/testthat/test-ggplot-bar-factor-category-ggplot2.png tests/testthat/test-ggplot-bar-identity-ggplot2.png tests/testthat/test-ggplot-bar-identity-plotly.png tests/testthat/test-ggplot-bar-stack-ggplot2.png tests/testthat/test-ggplot-bar-stack-plotly.png tests/testthat/test-ggplot-boxplot-datetime-ggplot2.png tests/testthat/test-ggplot-boxplot-datetime-plotly.png tests/testthat/test-ggplot-boxplot-ggplot2.png tests/testthat/test-ggplot-boxplot-plotly.png tests/testthat/test-ggplot-contour-ggplot2.png tests/testthat/test-ggplot-date-class-Date-ggplot2.png tests/testthat/test-ggplot-date-irregular-time-series-ggplot2.png tests/testthat/test-ggplot-date-strings-ggplot2.png tests/testthat/test-ggplot-date-strings-plotly.png tests/testthat/test-ggplot-density-ggplot2.png tests/testthat/test-ggplot-density2d-ggplot2.png tests/testthat/test-ggplot-errorbar-ggplot2.png tests/testthat/test-ggplot-errorbar-horizontal-ggplot2.png tests/testthat/test-ggplot-errorbar-horizontal-plotly.png tests/testthat/test-ggplot-heatmap-ggplot2.png tests/testthat/test-ggplot-histogram-barmodestack-ggplot2.png tests/testthat/test-ggplot-histogram-barmodestack-plotly.png tests/testthat/test-ggplot-histogram-binwidth-ggplot2.png tests/testthat/test-ggplot-histogram-binwidth-plotly.png tests/testthat/test-ggplot-histogram-dates-ggplot2.png tests/testthat/test-ggplot-histogram-dates-plotly.png tests/testthat/test-ggplot-hline-ggplot2.png tests/testthat/test-ggplot-hline-plotly.png tests/testthat/test-ggplot-labels-angles-ggplot2.png tests/testthat/test-ggplot-labels-ggtitle-ggplot2.png tests/testthat/test-ggplot-labels-scale_x_continuous_name-ggplot2.png tests/testthat/test-ggplot-labels-ylab-ggplot2.png tests/testthat/test-ggplot-legend-hidden-ggplot2.png tests/testthat/test-ggplot-legend-order-ggplot2.png tests/testthat/test-ggplot-legend-order-plotly.png tests/testthat/test-ggplot-linetype-colors-ggplot2.png tests/testthat/test-ggplot-linetype-colors-plotly.png tests/testthat/test-ggplot-linetype-types-ggplot2.png tests/testthat/test-ggplot-linetype-types-plotly.png tests/testthat/test-ggplot-names-ggplot2.png tests/testthat/test-ggplot-names-plotly.png tests/testthat/test-ggplot-path-colored-groups-stay-together-plotly.png tests/testthat/test-ggplot-path-colors-plotly.png tests/testthat/test-ggplot-path-line-symbols-plotly.png tests/testthat/test-ggplot-path.R tests/testthat/test-ggplot-polygons-borders-ggplot2.png tests/testthat/test-ggplot-polygons-borders-plotly.png tests/testthat/test-ggplot-polygons-dashed-ggplot2.png tests/testthat/test-ggplot-polygons-dashed-plotly.png tests/testthat/test-ggplot-polygons-filled-polygons-ggplot2.png tests/testthat/test-ggplot-polygons-filled-polygons-plotly.png tests/testthat/test-ggplot-polygons-halloween-ggplot2.png tests/testthat/test-ggplot-polygons-halloween-plotly.png tests/testthat/test-ggplot-polygons-springgreen3-ggplot2.png tests/testthat/test-ggplot-polygons-springgreen3-lab-ggplot2.png tests/testthat/test-ggplot-polygons-springgreen3-lab-plotly.png tests/testthat/test-ggplot-polygons-springgreen3-plotly.png tests/testthat/test-ggplot-ribbon-ggplot2.png tests/testthat/test-ggplot-ribbon-plotly.png tests/testthat/test-ggplot-segment-ggplot2.png tests/testthat/test-ggplot-size-global-scaling-ggplot2.png tests/testthat/test-ggplot-size-global-scaling-plotly.png tests/testthat/test-ggplot-size-is-a-vector-ggplot2.png tests/testthat/test-ggplot-size-not-a-vector-ggplot2.png tests/testthat/test-ggplot-stack-ggplot2.png tests/testthat/test-ggplot-stack-plotly.png tests/testthat/test-ggplot-step-gg.hv-ggplot2.png tests/testthat/test-ggplot-step-gg.hv-plotly.png tests/testthat/test-ggplot-step-gg.hvh-plotly.png tests/testthat/test-ggplot-step-gg.linear-geom_line-ggplot2.png tests/testthat/test-ggplot-step-gg.linear-geom_line-plotly.png tests/testthat/test-ggplot-step-gg.linear-geom_path-ggplot2.png tests/testthat/test-ggplot-step-gg.vh-ggplot2.png tests/testthat/test-ggplot-step-gg.vh-plotly.png tests/testthat/test-ggplot-step-gg.vhv-plotly.png tests/testthat/test-ggplot-text-ggplot2.png tests/testthat/test-ggplot-text.R tests/testthat/test-ggplot-theme-background-ggplot2.png tests/testthat/test-ggplot-theme-dashed-grid-lines-ggplot2.png tests/testthat/test-ggplot-theme-marker-default-ggplot2.png tests/testthat/test-ggplot-theme-marker-default-plotly.png tests/testthat/test-ggplot-theme-panel-border-1-ggplot2.png tests/testthat/test-ggplot-theme-panel-border-2-ggplot2.png tests/testthat/test-ggplot-theme-ticks-and-grids-ggplot2.png tests/testthat/test-ggplot-theme-ticks-default-ggplot2.png tests/testthat/test-ggplot-theme-zeroline-default-ggplot2.png tests/testthat/test-ggplot-violin-ggplot2.png tests/testthat/test-ggplot-violin-plotly.png
2 parents 3abd3f6 + 18709da commit 3463714

File tree

681 files changed

+27079
-243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

681 files changed

+27079
-243
lines changed

run_tests_with_outputs.R

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
library(testthat)
2+
devtools::install_github("ropensci/plotly", ref="marianne-datetime-binning")
3+
library(plotly)
24

35
setwd("tests")
46

5-
save_outputs <- function(gg, name, ignore_ggplot=FALSE) {
7+
save_outputs <- function(gg, name, ignore_ggplot=FALSE, file_prefix="test-ggplot-") {
8+
filesystem_name <- gsub(' ', '_', name)
69
print(paste("running", name))
710
py <- plotly("TestBot", "r1neazxo9w")
811
u <- py$ggplotly(gg, kwargs=list(filename=paste0("ggplot2/", name),
912
fileopt="overwrite", auto_open=FALSE))
1013
plotlyUrl <- u$response$url
11-
writeLines(plotlyUrl, paste0("test-ggplot-", name, ".url"))
14+
writeLines(plotlyUrl, paste0(file_prefix, filesystem_name, ".url"))
1215
pngdata <- getURLContent(paste0(u$response$url, ".png"))
13-
writeBin(as.raw(pngdata), paste0("test-ggplot-", name, "-plotly.png"))
16+
writeBin(as.raw(pngdata), paste0(file_prefix, filesystem_name, "-plotly.png"))
1417
if (!ignore_ggplot) {
15-
ggsave(paste0("test-ggplot-", name, "-ggplot2.png"), plot=gg, w=7, h=5)
18+
ggsave(paste0(file_prefix, filesystem_name, "-ggplot2.png"), plot=gg, w=7, h=5)
1619
}
1720

1821
# Save the json
@@ -21,4 +24,16 @@ save_outputs <- function(gg, name, ignore_ggplot=FALSE) {
2124
}
2225

2326
test_check("plotly")
24-
setwd("..")
27+
setwd("cookbook-test-suite")
28+
29+
source('axes.R')
30+
source('bars_and_lines.R')
31+
source('distributions.R')
32+
source('legends.R')
33+
source('lines.R')
34+
source('means_and_error_bars.R')
35+
source('scatterplots.R')
36+
source('titles.R')
37+
38+
setwd("../..")
39+

tests/cookbook-test-suite/axes.R

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot()
2+
3+
bp1 <- bp + coord_flip()
4+
save_outputs(bp1, "axes/coord flip", file_prefix="")
5+
6+
# Manually set the order of a discrete-valued axis
7+
bp2 <- bp + scale_x_discrete(limits=c("trt1","trt2","ctrl"))
8+
save_outputs(bp2, "axes/discrete valued axes", file_prefix="")
9+
10+
# Reverse the order of a discrete-valued axis
11+
# Get the levels of the factor
12+
flevels <- levels(PlantGrowth$group)
13+
# "ctrl" "trt1" "trt2"
14+
# Reverse the order
15+
flevels <- rev(flevels)
16+
# "trt2" "trt1" "ctrl"
17+
bp3 <- bp + scale_x_discrete(limits=flevels)
18+
save_outputs(bp3, "axes/reversed ordered axes - 1", file_prefix="")
19+
20+
# Or it can be done in one line:
21+
bp4 <- bp + scale_x_discrete(limits = rev(levels(PlantGrowth$group)) )
22+
save_outputs(bp4, "axes/reversed ordered axes - 2", file_prefix="")
23+
24+
bp5 <- bp + scale_x_discrete(breaks=c("ctrl", "trt1", "trt2"), labels=c("Control", "Treat 1", "Treat 2"))
25+
save_outputs(bp5, "axes/setting tick mark labels", file_prefix="")
26+
27+
# Hide x tick marks, labels, and grid lines
28+
bp6 <- bp + scale_x_discrete(breaks=NULL)
29+
save_outputs(bp6, "axes/hidden tick marks labels gridline", file_prefix="")
30+
31+
# Hide all tick marks and labels (on X axis), but keep the gridlines
32+
bp7 <- bp + theme(axis.ticks = element_blank(), axis.text.x = element_blank())
33+
save_outputs(bp7, "axes/hidden tick marks and labels", file_prefix="")
34+
35+
# Set the range of a continuous-valued axis
36+
# These are equivalent
37+
bp8 <- bp + ylim(0,8)
38+
save_outputs(bp8, "axes/set range of continuous-valued axis - 1", file_prefix="")
39+
bp9 <- bp + scale_y_continuous(limits=c(0,8))
40+
save_outputs(bp9, "axes/set range of continuous-valued axis - 2", file_prefix="")
41+
42+
# These two do the same thing; all data points outside the graphing range are dropped,
43+
# resulting in a misleading box plot
44+
bp10 <- bp + ylim(5, 7.5)
45+
save_outputs(bp10, "axes/misleading range", file_prefix="")
46+
bp + scale_y_continuous(limits=c(5, 7.5))
47+
48+
# Using coord_cartesian "zooms" into the area
49+
bp11 <- bp + coord_cartesian(ylim=c(5, 7.5))
50+
save_outputs(bp11, "axes/coord_cartesian", file_prefix="")
51+
52+
# Specify tick marks directly
53+
bp12 <- bp + coord_cartesian(ylim=c(5, 7.5)) +
54+
scale_y_continuous(breaks=seq(0, 10, 0.25)) # Ticks from 0-10, every .25
55+
save_outputs(bp12, "axes/specify tick marks directly", file_prefix="")
56+
57+
# Reverse order of a continuous-valued axis
58+
bp13 <- bp + scale_y_reverse()
59+
save_outputs(bp13, "axes/reverse y scale", file_prefix="")
60+
61+
# Setting the tick marks on an axis
62+
# This will show tick marks on every 0.25 from 1 to 10
63+
# The scale will show only the ones that are within range (3.50-6.25 in this case)
64+
bp14 <- bp + scale_y_continuous(breaks=seq(1,10,1/4))
65+
save_outputs(bp14, "axes/manual tick marks", file_prefix="")
66+
67+
# The breaks can be spaced unevenly
68+
bp15 <- bp + scale_y_continuous(breaks=c(4, 4.25, 4.5, 5, 6,8))
69+
save_outputs(bp15, "axes/uneven tick marks", file_prefix="")
70+
71+
# Suppress ticks and gridlines
72+
bp16 <- bp + scale_y_continuous(breaks=NULL)
73+
save_outputs(bp16, "axes/suppress y ticks labels and gridlines", file_prefix="")
74+
75+
# Hide tick marks and labels (on Y axis), but keep the gridlines
76+
bp17 <- bp + theme(axis.ticks = element_blank(), axis.text.y = element_blank())
77+
save_outputs(bp17, "axes/suppress y ticks and labels", file_prefix="")
78+
79+
# Create some noisy exponentially-distributed data
80+
xval = c(0.26932812,-0.05341404,0.36977717,0.91504712,0.46329006,0.37956526, 0.93290644,0.75558976,0.67633497,0.48655293,0.79478162,0.55109982, 0.51681398,0.81073512,0.49406579,0.93919618,0.90472008,0.98732256, 0.94379876,0.95790909,0.54614241,1.13356941,1.13299144,1.18159277, 1.16428407,1.22955005,1.21030897,1.23314811,1.53822718,1.53674330, 1.80020468,1.40774011,1.74573515,1.26651625,2.06607711,1.50237263, 1.38480531,1.83625381,2.35275649,1.99004291,2.80396442,2.20863240, 2.42998876,2.12801180,2.26290348,2.38185989,2.14936036,2.66587947, 2.64586596,2.44240603,2.39266452,3.11831215,2.70258927,2.65529134, 2.65634690,2.95984290,2.71058076,2.87919480,3.07739358,2.66841935, 3.10792706,3.17134285,3.98070271,3.55497279,3.36831009,3.31390892, 3.32753965,2.86981968,3.22741000,3.78806438,3.74434536,3.56928928, 3.83783177,3.24485807,4.05766233,4.13619455,4.26888054,3.47546258, 3.93045819,3.77620080,4.66676431,3.88059240,4.54694485,4.03915767, 4.25556093,4.39251819,4.42692029,4.23262929,4.44890758,4.84981161, 4.51104252,4.33004508,5.06350705,4.89714069,4.21599077,4.55457578, 5.04044393,4.89111297,5.03105215,4.64113164)
81+
yval = c(1.177512e+01,7.303113e+00,6.109053e+00,2.545169e+01,3.366341e+01,1.042255e+01,2.703767e+01,1.178223e+01,4.495965e+01,1.614609e+01,4.003015e+01,1.038442e+02,4.024992e+01,4.163942e+01,9.108197e+01,3.116299e+01,2.558871e+02,7.482977e+01,2.502789e+01,5.923683e+01,3.967814e+01,9.207318e+01,1.298618e+02,1.138197e+02,1.804303e+02,3.363494e+02,3.197204e+02,4.968737e+02,1.783433e+02,4.765546e+02,4.486885e+02,6.736079e+02,4.289288e+02,3.433946e+02,5.658634e+02,4.667053e+02,5.257803e+02,3.401038e+02,6.131335e+02,5.928647e+02,7.838524e+02,7.987915e+02,3.348470e+03,1.704767e+03,1.264169e+03,2.690011e+03,2.738240e+03,1.663862e+03,5.377442e+03,3.883820e+03,6.673624e+03,1.857346e+03,6.683962e+03,1.213027e+03,1.742885e+03,2.146094e+03,4.597174e+03,4.357154e+03,8.413851e+03,8.194194e+03,7.076611e+03,1.554628e+04,6.984783e+03,1.027392e+04,1.158795e+04,9.193111e+03,3.226748e+04,3.955445e+04,2.978953e+04,1.926420e+04,7.610544e+04,2.129694e+04,1.438764e+04,7.908876e+04,2.676003e+04,1.791758e+05,3.978871e+04,9.411120e+04,4.486940e+04,1.270526e+05,1.587331e+05,1.616173e+05,3.351522e+05,3.001782e+05,2.527824e+05,2.745851e+05,3.446376e+05,1.544497e+05,1.318314e+05,8.334336e+05,2.464391e+05,8.694818e+05,2.747323e+05,6.373497e+05,2.918690e+05,9.505114e+05,7.835278e+05,3.775567e+05,1.795523e+06,1.568159e+06)
82+
83+
dat <- data.frame(xval = xval, yval = yval)
84+
85+
# A scatterplot with regular (linear) axis scaling
86+
sp <- ggplot(dat, aes(xval, yval)) + geom_point()
87+
save_outputs(sp, "axes/linear axes", file_prefix="")
88+
89+
# log2 scaling of the y axis (with visually-equal spacing)
90+
library(scales) # Need the scales package
91+
sp1 <- sp + scale_y_continuous(trans=log2_trans())
92+
save_outputs(sp1, "axes/ln y axes with visual-equal spacing", file_prefix="")
93+
94+
# log2 coordinate transformation (with visually-diminishing spacing)
95+
sp2 <- sp + coord_trans(y="log2")
96+
save_outputs(sp2, "axes/ln y axes with visually diminishing spacing", file_prefix="")
97+
98+
sp3 <- sp + scale_y_continuous(trans = log2_trans(),
99+
breaks = trans_breaks("log2", function(x) 2^x),
100+
labels = trans_format("log2", math_format(2^.x)))
101+
save_outputs(sp3, "axes/ln y axes with exponent tick marks", file_prefix="")
102+
103+
dat10 <- data.frame(xval = xval, yval = yval)
104+
105+
sp10 <- ggplot(dat10, aes(xval, yval)) + geom_point()
106+
107+
# log10
108+
sp101 <- sp10 + scale_y_log10()
109+
save_outputs(sp101, "axes/log_10 y axes", file_prefix="")
110+
111+
# log10 with exponents on tick labels
112+
sp102 <- sp10 + scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
113+
labels = trans_format("log10", math_format(10^.x)))
114+
save_outputs(sp102, "axes/log_10 y axes with exponent tick marks", file_prefix="")
115+
116+
# Data where x ranges from 0-10, y ranges from 0-30
117+
set.seed(202)
118+
dat <- data.frame(xval = runif(40,0,10), yval = runif(40,0,30))
119+
sp <- ggplot(dat, aes(xval, yval)) + geom_point()
120+
121+
# Force equal scaling
122+
sp4 <- sp + coord_fixed()
123+
save_outputs(sp4, "axes/forced equal spacing", file_prefix="")
124+
125+
# Equal scaling, with each 1 on the x axis the same length as y on x axis
126+
sp5 <- sp + coord_fixed(ratio=1/3)
127+
save_outputs(sp5, "axes/forced equal scaling", file_prefix="")
128+
129+
bp10 <- bp + theme(axis.title.x = element_blank()) + # Remove x-axis label
130+
ylab("Weight (Kg)") # Set y-axis label
131+
save_outputs(bp10, "axes/axes labels", file_prefix="")
132+
133+
# Also possible to set the axis label with the scale
134+
# Note that vertical space is still reserved for x"s label
135+
bp11 <- bp + scale_x_discrete(name="") +
136+
scale_y_continuous(name="Weight (Kg)")
137+
save_outputs(bp11, "axes/axes labels set with scale", file_prefix="")
138+
139+
# Change font options:
140+
# X-axis label: bold, red, and 20 points
141+
# X-axis tick marks: rotate 90 degrees CCW, move to the left a bit (using vjust,
142+
# since the labels are rotated), and 16 points
143+
bp12 <- bp + theme(axis.title.x = element_text(face="bold", colour="#990000", size=20),
144+
axis.text.x = element_text(angle=90, vjust=0.5, size=16))
145+
save_outputs(bp12, "axes/axes labels with formatting", file_prefix="")
146+
147+
# Label formatters
148+
library(scales) # Need the scales package
149+
bp13 <- bp + scale_y_continuous(labels=percent) +
150+
scale_x_discrete(labels=abbreviate) # In this particular case, it has no effect
151+
save_outputs(bp13, "axes/axes labels with percent labels", file_prefix="")
152+
153+
# Self-defined formatting function for times.
154+
timeHMS_formatter <- function(x) {
155+
h <- floor(x/60)
156+
m <- floor(x %% 60)
157+
s <- round(60*(x %% 1)) # Round to nearest second
158+
lab <- sprintf("%02d:%02d:%02d", h, m, s) # Format the strings as HH:MM:SS
159+
lab <- gsub("^00:", "", lab) # Remove leading 00: if present
160+
lab <- gsub("^0", "", lab) # Remove leading 0 if present
161+
}
162+
163+
bp14 <- bp + scale_y_continuous(label=timeHMS_formatter)
164+
save_outputs(bp14, "axes/axes labels with custom time labels", file_prefix="")
165+
166+
# Hide all the gridlines
167+
bp15 <- bp + theme(panel.grid.minor=element_blank(), panel.grid.major=element_blank())
168+
save_outputs(bp15, "axes/hidden gridlines", file_prefix="")
169+
170+
# Hide just the minor gridlines
171+
bp16 <- bp + theme(panel.grid.minor=element_blank())
172+
save_outputs(bp16, "axes/hidden minor gridlines", file_prefix="")
173+
174+
# Hide all the horizontal gridlines
175+
bp17 <- bp + theme(panel.grid.minor.x=element_blank(), panel.grid.major.x=element_blank())
176+
save_outputs(bp17, "axes/hidden horizontal gridlines", file_prefix="")
177+
178+
# Hide all the vertical gridlines
179+
bp18 <- bp + theme(panel.grid.minor.y=element_blank(), panel.grid.major.y=element_blank())
180+
save_outputs(bp18, "axes/hidden vertical gridlines", file_prefix="")
Loading
Loading
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
{
2+
"data": [
3+
{
4+
"y": [
5+
4.17,
6+
5.58,
7+
5.18,
8+
6.11,
9+
4.5,
10+
4.61,
11+
5.17,
12+
4.53,
13+
5.33,
14+
5.14
15+
],
16+
"name": "ctrl",
17+
"fillcolor": "rgb(255,255,255)",
18+
"line": {
19+
"color": "rgb(51,51,51)",
20+
"width": 2,
21+
"dash": "solid",
22+
"shape": "linear"
23+
},
24+
"xaxis": "x1",
25+
"yaxis": "y1",
26+
"type": "box"
27+
},
28+
{
29+
"y": [
30+
4.81,
31+
4.17,
32+
4.41,
33+
3.59,
34+
5.87,
35+
3.83,
36+
6.03,
37+
4.89,
38+
4.32,
39+
4.69
40+
],
41+
"name": "trt1",
42+
"fillcolor": "rgb(255,255,255)",
43+
"line": {
44+
"color": "rgb(51,51,51)",
45+
"width": 2,
46+
"dash": "solid",
47+
"shape": "linear"
48+
},
49+
"xaxis": "x1",
50+
"yaxis": "y1",
51+
"type": "box"
52+
},
53+
{
54+
"y": [
55+
6.31,
56+
5.12,
57+
5.54,
58+
5.5,
59+
5.37,
60+
5.29,
61+
4.92,
62+
6.15,
63+
5.8,
64+
5.26
65+
],
66+
"name": "trt2",
67+
"fillcolor": "rgb(255,255,255)",
68+
"line": {
69+
"color": "rgb(51,51,51)",
70+
"width": 2,
71+
"dash": "solid",
72+
"shape": "linear"
73+
},
74+
"xaxis": "x1",
75+
"yaxis": "y1",
76+
"type": "box"
77+
}
78+
],
79+
"layout": {
80+
"titlefont": {
81+
"family": ""
82+
},
83+
"showlegend": false,
84+
"xaxis": {
85+
"title": "group",
86+
"type": "category",
87+
"showgrid": true,
88+
"zeroline": false,
89+
"showline": false,
90+
"ticks": "outside",
91+
"showticklabels": true,
92+
"tickcolor": "rgb(127,127,127)",
93+
"gridcolor": "rgb(255,255,255)"
94+
},
95+
"yaxis": {
96+
"title": "Weight (Kg)",
97+
"type": "linear",
98+
"showgrid": true,
99+
"zeroline": false,
100+
"showline": false,
101+
"ticks": "outside",
102+
"showticklabels": true,
103+
"tickcolor": "rgb(127,127,127)",
104+
"gridcolor": "rgb(255,255,255)"
105+
},
106+
"legend": {
107+
"x": 1.05,
108+
"y": 0.5,
109+
"font": {
110+
"family": ""
111+
},
112+
"bgcolor": "rgb(255,255,255)",
113+
"bordercolor": "transparent",
114+
"xanchor": "center",
115+
"yanchor": "top"
116+
},
117+
"margin": {
118+
"r": 10
119+
},
120+
"paper_bgcolor": "rgb(255,255,255)",
121+
"plot_bgcolor": "rgb(229,229,229)"
122+
}
123+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
https://plot.ly/~TestBot/617
Loading
Loading

0 commit comments

Comments
 (0)