Closed thomasthomasth closed 5 years ago
Hi,
You can add Y and Y2 in a 'Y3' column and keep Y2 in label :
library(shiny)
library(rAmCharts)
library(pipeR)
DT <- data.frame(x = 1:10, y = round(runif(10), 2), y2 =round(runif(10), 2))
DT$y3 <- DT$y+DT$y2
pipeline(
amXYChart(dataProvider = DT, hideYScrollbar = T, stacked = T),
addGraph(balloonText = 'x:<b>[[x]]</b> y:<b>[[y]]</b>',
bullet = 'circle', lineAlpha=1, xField = 'x',yField = 'y', maxBulletSize = 100),
addGraph(balloonText = 'x:<b>[[x]]</b> y:<b>[[y2]]</b>',
bullet = 'circle', lineAlpha=1, xField = 'x',yField = 'y3', maxBulletSize = 100,stacked = T),
setChartCursor(),
setChartScrollbar(updateOnReleaseOnly = TRUE))
Titouan
Hi,
You can add Y and Y2 in a 'Y3' column and keep Y2 in label :
library(shiny) library(rAmCharts) library(pipeR) DT <- data.frame(x = 1:10, y = round(runif(10), 2), y2 =round(runif(10), 2)) DT$y3 <- DT$y+DT$y2 pipeline( amXYChart(dataProvider = DT, hideYScrollbar = T, stacked = T), addGraph(balloonText = 'x:<b>[[x]]</b> y:<b>[[y]]</b>', bullet = 'circle', lineAlpha=1, xField = 'x',yField = 'y', maxBulletSize = 100), addGraph(balloonText = 'x:<b>[[x]]</b> y:<b>[[y2]]</b>', bullet = 'circle', lineAlpha=1, xField = 'x',yField = 'y3', maxBulletSize = 100,stacked = T), setChartCursor(), setChartScrollbar(updateOnReleaseOnly = TRUE))
Titouan
Hi,
Yeah, this is a nice workaround but this is a built-in option in amChart.js. It would not be efficient to perform this over and over again in R for each set of series - even though it gives us the opportunity to define custom tooltips. I frequently work with data that consists of several series (10-12, say). But number of such series changes from data to data - and adding these series one by one would be difficult to handle.
Here is an example that I tried to regenerate within R, but I could not manage this so far. It clearly says that there is a stacked option - which is exactly what I am looking for.
https://www.amcharts.com/demos/stacked-area/
Actually, I would like to accomplish this for time series, but I have found to stack option for amTimeSeries charts. Any help would be appreciated.
Thanks in advance,
Tamas
Hi,
You can use amSerialChart insted of amXYChart.
Exemple :
dp <- data.frame(year = 1994:2012,
cars = rnorm(length(1994:2012), mean = 10),
motorcycles = rnorm(length(1994:2012), mean = 15),
bicycles = rnorm(length(1994:2012), mean = 20)
)
dp <- round(dp)
url_car <- 'http://www.amcharts.com/lib/3/images/car.png'
url_motorcycle <- 'http://www.amcharts.com/lib/3/images/motorcycle.png'
url_bicycle <- 'http://www.amcharts.com/lib/3/images/bicycle.png'
pref <- '<img src = '
suf <- paste('style = "vertical-align:bottom;',
'margin-right: 10px; width:28px; height:21px;">',
'<span style = "font-size:14px; color:#000000;">',
'<b>[[value]]</b></span>')
##Plot
pipeR::pipeline(
amSerialChart(marginRight = 30, plotAreaBorderAlpha = 0, categoryField = 'year',
startDuration = 0, dataProvider = dp, theme = 'light'),
setLegend(equalWidths = FALSE, periodValueText = 'total: [[value.sum]]',
position = 'top', valueAlign = 'left', valueWidth = 100),
addValueAxis(stackType = 'regular', gridAlpha = 0.07, position = 'left',
title = 'Traffic incidents'),
addGraph(balloonText = paste(pref, url_car, suf), fillAlphas = 0.6,
hidden = TRUE, lineAlpha = 0.4, title = 'Cars', valueField = 'cars'),
addGraph(balloonText = paste(pref, url_motorcycle, suf), fillAlphas = 0.6,
lineAlpha = 0.4, title = 'Motorcycles', valueField = 'motorcycles'),
addGraph(balloonText = paste(pref, url_bicycle, suf), fillAlphas = 0.6,
lineAlpha = 0.4, title = 'Bicycles', valueField = 'bicycles'),
setCategoryAxis(startOnAxis = TRUE, axisColor = '#DADADA', gridAlpha = 0.07),
addGuide(category = '2001', toCategory = '2003',
lineColor = '#CC0000', lineAlpha = 1, fillAlpha = 0.2,
fillColor = '#CC0000', dashLength = 2, inside = TRUE,
labelRotation = 90, label = 'fines for speeding increased'),
addGuide(category = '2007', lineColor = '#CC0000', lineAlpha = 1,
dashLength = 2, inside = TRUE, labelRotation = 90,
label = 'motorcycle fee introduced'),
setChartScrollbar(oppositeAxis = FALSE, dragIcon = 'dragIconRectBigBlack'),
setChartCursor(cursorAlpha = 0)
)
If you want more exemples in R you can use : rAmCharts::runExamples()
Best,
Titouan
Perfect! This is exactly what I was looking for!
Best wishes,
Tamas
Hi,
Could you provide me with a minimal example of a stacked area chart? I can create non-stacked line charts but I do want stacked ones because of the nature of the data that I work with. Also it is not clear to me whether area charts can be created at all. But I think so..
Here is a non-stacked line-chart:
Thanks,
Tamas