Вы можете использовать файл css с:
r2d3(data, script = "script.js", css = "styles.css")
Как отмечено в документации здесь . Я взял ваш CSS и поместил его в файл без проблем для текста, нарисованного в SVG.
С этим я справился со следующим (адаптируя базовый пример из документации):
chart.r:
library(r2d3)
data <- c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20)
r2d3(data, script = "chart.js", css="styles.css")
styles.css:
@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,600');
text {
font-family: "Fira Sans", sans-serif;
fill: #371ea3; /* no need for 'color' */
}
и chart.js:
var barHeight = Math.floor(height / data.length);
svg.selectAll('rect')
.data(data)
.enter().append('rect')
.attr('width', function(d) { return d * width; })
.attr('height', barHeight)
.attr('y', function(d, i) { return i * barHeight; })
.attr('fill', 'steelblue');
svg.selectAll('text')
.data(data)
.enter()
.append('text')
.attr('x',20)
.attr('y', function(d,i) { return i * barHeight + 30})
.text(function(d){ return d; })
Предоставление:
У меня также был успех с уменьшенным CSS-файлом, указав только шрифт:
@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,600');
А затем с помощью selection.style/attr
для оформления текста:
selection.attr('font-family', "FontFamilyName"); // or:
selection.style('font-family', "FontFamiliyName");
А вот как выглядел этот подход (снова адаптируя базовый пример из документации)
chart.r:
library(r2d3)
data <- c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20)
r2d3(data, script = "chart.js", css="styles.css")
styles.css:
@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,600');
И chart.js (на основе базового вводного примера в API документов):
var barHeight = Math.floor(height / data.length);
svg.selectAll('rect')
.data(data)
.enter().append('rect')
.attr('width', function(d) { return d * width; })
.attr('height', barHeight)
.attr('y', function(d, i) { return i * barHeight; })
.attr('fill', 'steelblue');
svg.selectAll('text')
.data(data)
.enter()
.append('text')
.attr('x',20)
.attr('y', function(d,i) { return i * barHeight + 10})
.text(function(d){ return d; })
.style('font-family',function(d,i) {
if(i%2 == 1) return 'Fira Sans'; else return ''; // for contrast.
});
Yielding (чередование шрифта по умолчанию и Fira Sans для контраста):