Я работаю над тем, чтобы научиться интегрировать Google Charts в приложение блестящий , не используя дополнительные издержки пакета googlevis , и самостоятельно вносить большинство вещей в приложение. Ниже приведен простой пример Hello World, который на данный момент содержит элементы, которые я хочу должным образом содержать в приложении.
Я пытаюсь узнать, как использовать данные r , созданные в объекте tmp()
, для заполнения таблицы данных, которую я создаю. Приложение, приведенное ниже, работает, но диаграммы заполняются на основе данных, жестко закодированных в объекте data
.
Есть ли способ, которым мой r dataframe может использоваться для заполнения массива данных?
минимальный воспроизводимый файл пользовательского интерфейса
ui <- fluidPage(
titlePanel("Hello Google Charts"),
sidebarLayout(
sidebarPanel(
h1('Hello World')
),
mainPanel(
htmlTemplate("test3.html"),
verbatimTextOutput('x')
)
)
)
минимальный воспроизводимый файл сервера
server <- function(input, output) {
tmp <- data.frame(v1 = rnorm(4), v2 = rnorm(4))
output$x <- renderPrint({tmp})
}
HTML файл test3. html
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['gauge']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['v1', 'v2'],
['1', -1.9372140],
['2', -1.5234370],
['3', 0.2374601],
['4', 1.0550744]
]);
var options = {
width: 400, height: 120,
redFrom: 75, redTo: 100,
yellowFrom:50, yellowTo: 75,
minorTicks: 10
};
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
chart.draw(data, options);
setInterval(function() {
data.setValue(0, 1, 40 + Math.round(60 * Math.random()));
chart.draw(data, options);
}, 10000);
setInterval(function() {
data.setValue(1, 1, 40 + Math.round(60 * Math.random()));
chart.draw(data, options);
}, 100);
setInterval(function() {
data.setValue(2, 1, 10 );
chart.draw(data, options);
}, 100);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 400px; height: 120px;">
</div>
</body>
</html>