1
+ iris <- iris | > dplyr :: mutate(Sepal.Length = Sepal.Length * 100 )
2
+
1
3
fig <- plotly :: plot_ly(data = iris , x = ~ Sepal.Length , y = ~ Petal.Length )
2
4
3
5
fig
4
6
5
- fig | >
7
+ fig | >
6
8
theme_af_plotly()
7
9
10
+
8
11
theme_af_plotly <- function (chart ,
9
12
base_size = 14 ,
10
- base_line_size = base_size / 24 ,
11
13
grid = c(" y" , " x" , " xy" , " none" ),
12
14
axis = c(" x" , " y" , " xy" , " none" ),
13
15
ticks = c(" xy" , " x" , " y" , " none" ),
14
16
legend = c(" right" , " left" , " top" , " bottom" , " none" )) {
15
17
18
+
16
19
grid <- match.arg(grid )
17
20
axis <- match.arg(axis )
18
21
ticks <- match.arg(ticks )
@@ -25,6 +28,7 @@ theme_af_plotly <- function(chart,
25
28
afcharts_font <- " Arial"
26
29
27
30
half_line <- base_size / 2
31
+ base_line_size = base_size / 24
28
32
29
33
# Set grid lines dependent on grid arg
30
34
grid_x <- if (grid %in% c(" x" , " xy" )) TRUE else FALSE
@@ -38,78 +42,115 @@ theme_af_plotly <- function(chart,
38
42
ticks_x <- if (ticks %in% c(" x" , " xy" )) " outside" else " "
39
43
ticks_y <- if (ticks %in% c(" y" , " xy" )) " outside" else " "
40
44
45
+
46
+ y_title <- plotly :: plotly_build(chart )$ x $ layout $ yaxis $ title | > unclass()
47
+ x_title <- plotly :: plotly_build(chart )$ x $ layout $ xaxis $ title | > unclass()
48
+
41
49
chart | >
42
50
plotly :: layout(
43
51
font = list (
44
- colour = " black" ,
45
- size = base_size ,
52
+ color = " black" ,
53
+ size = base_size * ( 96 / 72 ) ,
46
54
family = afcharts_font
47
55
),
48
56
49
- margin = list (
50
- l = 80 ,
51
- b = 80 ,
52
- r = 80 ,
53
- t = 0
54
- ),
57
+ # margin = list(
58
+ # l = 80,
59
+ # b = 80,
60
+ # r = 80,
61
+ # t = 0
62
+ # ),
63
+
64
+ # # title
65
+ # title = list(
66
+ # text = "This is the title",
67
+ # font = list(
68
+ # size = 1.6 * base_size
69
+ # ),
70
+ # xref = "paper",
71
+ # yref = "container",
72
+ # xanchor = "left",
73
+ # yanchor = "top",
74
+ # x = 0,
75
+ # y = 1,
76
+ # automargin = TRUE,
77
+ # pad = list(b = ((half_line * 2) + base_size) * (72 / 96))
78
+ # ),
55
79
56
- # title
57
- title = list (
58
- text = " This is the title" ,
59
- font = list (
60
- size = 1.6 * base_size
61
- ),
62
- xref = " paper" ,
63
- xanchor = " left" ,
64
- yanchor = " top" ,
65
- x = 0 ,
66
- y = 1 ,
67
- pad = list (
68
- t = half_line * 2 * (96 / 72 )
69
- )
70
- ),
71
80
72
81
# x axis
82
+
73
83
xaxis = list (
84
+
74
85
fixedrange = TRUE ,
75
86
87
+ # title
88
+ title = list (
89
+ text = x_title ,
90
+ font = list (
91
+ color = " black" ,
92
+ size = base_size * (96 / 72 ),
93
+ family = afcharts_font
94
+ )
95
+ ),
96
+
97
+
76
98
# axis
77
99
showline = axis_x ,
78
100
linecolor = light_grey ,
79
- linewidth = base_line_size * ( 96 / 72 ) ,
101
+ linewidth = base_line_size * 3.7795 ,
80
102
81
103
# ticks
82
104
ticks = ticks_x ,
83
105
tickcolor = light_grey ,
84
106
ticklen = half_line / 2 * (96 / 72 ),
85
- tickwidth = base_line_size * ( 96 / 72 ) ,
107
+ tickwidth = base_line_size * 3.7795 ,
86
108
tickangle = 0 ,
87
109
88
110
# grid
89
111
showgrid = grid_x ,
90
- gridwidth = base_line_size * ( 96 / 72 ) ,
112
+ gridwidth = base_line_size * 3.7795 ,
91
113
gridcolor = light_grey
92
114
),
93
115
94
116
# y axis
117
+ annotations = list (
118
+ xref = " paper" ,
119
+ xanchor = " left" ,
120
+ x = 0 ,
121
+ yref = " paper" ,
122
+ yanchor = " bottom" ,
123
+ y = 1 ,
124
+ text = y_title ,
125
+ showarrow = FALSE ,
126
+ font = list (
127
+ size = base_size * ( 96 / 72 )
128
+ )
129
+ ),
130
+
95
131
yaxis = list (
96
132
fixedrange = TRUE ,
97
133
134
+ # title
135
+ title = list (
136
+ text = NA
137
+ ),
138
+
98
139
# axis
99
140
showline = axis_y ,
100
141
linecolor = light_grey ,
101
- linewidth = base_line_size * ( 96 / 72 ) ,
142
+ linewidth = base_line_size * 3.7795 ,
102
143
103
144
# ticks
104
145
ticks = ticks_y ,
105
146
tickcolor = light_grey ,
106
147
ticklen = half_line / 2 * (96 / 72 ),
107
- tickwidth = base_line_size * ( 96 / 72 ) ,
148
+ tickwidth = base_line_size * 3.7795 ,
108
149
tickangle = 0 ,
109
150
110
151
# grid
111
152
showgrid = grid_y ,
112
- gridwidth = base_line_size * ( 96 / 72 ) ,
153
+ gridwidth = base_line_size * 3.7795 ,
113
154
gridcolor = light_grey
114
155
),
115
156
@@ -118,7 +159,8 @@ theme_af_plotly <- function(chart,
118
159
bgcolor = " white" ,
119
160
font = list (
120
161
color = " black" ,
121
- size = base_size
162
+ size = base_size * (96 / 72 ),
163
+ family = afcharts_font
122
164
)
123
165
)
124
166
) | >
@@ -129,3 +171,15 @@ theme_af_plotly <- function(chart,
129
171
)
130
172
131
173
}
174
+
175
+
176
+
177
+ fig | >
178
+ theme_af_plotly()
179
+
180
+ library(ggplot2 )
181
+ ggplot(data = iris , aes(x = Sepal.Length , y = Petal.Length )) +
182
+ geom_point() +
183
+ theme_af() +
184
+ labs(title = " This is the title" )
185
+
0 commit comments