Using Google Annotated Time Line Chart Without Flash - google-visualization

I want a similar behavior Chart as Google Annotated Time Line Chart to display my Time Series Data from DataBase In our environment we are restricted using Flash .
But i see that Google Annotated Time Line Chart works only with Flash .
I want a similar behavior as of Google Annotated Time Line Chart showing two charts , where the below Chart helps us to select a Range and the Upper Chart displays the Zoomed Area .
I wanted to develop this by taking two divs , but i am struck up as how to maintain synchronization between these two divs (Chart Div and Slider Div)
If anybody developed has developed Google Annotated Time Line Chart Without Flash , please give some inputs as how to develop this .
Thank you very much for reading .

check out https://code.google.com/apis/ajax/playground/?type=visualization#chartrangefilter_control
I believe you can do simple annotations also using data roles 'annotation' and 'annotationtext' (not too much styling though). You can find more info here https://developers.google.com/chart/interactive/docs/roles.

I just ran into this:
http://www.highcharts.com/demo/dynamic-master-detail
It's not free but it looks interesting.

there is no other way to make charts in Google without Flash at the moment

Related

oracle apex 18.2 chart conditional formatting

As i am totally newbie to oracle apex technologies i am developing a simple chart application in which I have build a simple Bar Chart in apex 18.2, i want to do some conditional changes on chart on the basis of data retrieving from database , i didn't found any HTML expression box to enter custom HTML Expression , I need some Suggestion or Some good examples for to Customize the Chart behavior via css or java script , i have done googling but didn't found any useful material for apex 18.2 as all of examples are for some older versions.
Charts in APEX 18.2 are based on Oracle JET engine. If you're going spend more time on charts development, I advice you to check out this toolkit, and how it works. (https://www.oracle.com/webfolder/technetwork/jet/globalGetStarted.html)
If you just need a quick suggestions how to customize chart behavior then:
-set a static ID for your chart in application builder. It should be static ID of whole chart region, not just particular series.
-in the application use developer tools to figure out how chart widget works. In console you can easly catch the widget by jQuery selector $("#yourStaticID_jet"). "_jet" is crucial here. On this jQuery object you can use method ojChart() to interact with chart widget.
All available options for ojChart method are documented here: https://docs.oracle.com/cd/E87657_01/jet/reference-jet/oj.ojChart.html
At the beginning you can try:
$("#yourStaticID_jet").ojChart("option");
what should return object with all current options of the widget. Many of them let you impact the way your chart works. Some of them are not possible to set from application builder.
When you decide to change something dynamicly you can create Dynamic Action (for e.g. on some button) and choose type of action "Execute JavaScript Code". A nice example would be turning on stack property of your chart:
$("#yourStaticID_jet").ojChart({stack: 'on'});
There is also way to initialize your chart with some options. For this purpose go to Attribute section of your chart, and scroll down to "Advanced" JavaScript Initialization Code. Help text for this section will provide you example code.

How to add mouseover tooltip in google charts sankey diagram

and have been using Google Charts to visualize my data. I have tried to search for the answer to this question but couldn't not find anyone having the same problem as mine, or maybe my problem is really basic. Appreciate if someone can give me a hand.
I built a sankey diagram by following the steps listed in Google Charts - Sankey Diagram.
Here is my chart:
http://kuangkeng.github.io/keng-data-journalism/procurement%20project/sankey/index.html
However I would like to add tooltip to each line/path/link so when users mouseover, they can see the value and other details of the line.
According to Google Charts (the link above), I can fire a mouseover event using 'onmouseover' and 'onmouseout', but Google Charts does not show how to do it for Sankey diagram.
I then came over an example of using 'onmouseover' and 'onmouseout' in a Google Bar Chart:
https://developers.google.com/chart/interactive/docs/examples#mouseovertooltip
So I copied the code, modified and pasted into my code.
google.visualization.events.addListener(chart, 'onmouseover', barMouseOver);
google.visualization.events.addListener(chart, 'onmouseout', barMouseOut);
function barMouseOver(e) {
chart.setSelection([e]);
}
function barMouseOut(e) {
chart.setSelection([{'row': null, 'column': null}]);
}
When I mouseover, I got the error message "undefined is not a function". You can see the error message appears at the top of the chart when you mouseover the lines.
I tried to use another alternative showed by Google Charts documentation by adding a another column to my data and set its role as 'tooltip' but it didn't work for my chart because Google Sankey Diagram can only accept 3 columns.
Appreciate if someone can have a look or refer me to any solution available. Thanks.

Google Charts: How to overlay text message when dataset is empty?

I am charting selections made by the user. When my page first loads there are no selections.
How do I show some text over the chart like below?
Note:
I don't care about the formatting - my screen capture tool adds that formatting
This is well documented for the depreciated Google Image Charts, but that doesn't help me

Can I modify elements of a Google Chart after the page has loaded? Specifically, colors

I'm working with the Visualization API and column chart package for Google Charts. I can generate a graph with the data I want, but can I modify parts of the chart after the page has loaded? Specifically, I want to change the color of one column. I've done this by editing the DOM in Chrome's Element's Panel tool, but is there a way I can actually code this into my page, or am I out of luck? Thanks!
I had a similar challenge. In my case I needed a different color for each bar in a bar chart, something that the vis api doesn't support.
I ended up with this (using jquery, but no reason why it can't be done just using native dom functions)
statusCols btw is just an array of html colors...
function colorBars(){
$("#masterstatus g rect[fill='#3366cc']").each(function(){$(this).attr("bar", 'true')})
$("#masterstatus g rect[bar='true']").each(function(barNo){
$(this).attr("fill", statusCols[barNo]);
});
}
The secret (as it sounds like you have already discovered) is in identifying the dom element to change, that's the $("#masterstatus g rect[fill='#3366cc']") bit - I'm just selecting bars in the default color and iterating through them, in your case you want to pic an ordinal (eg the third one in the collection)
Hope that helps.
Actually I hope even more that someone else comes up with a better way...

Bar chart with values placed on the chart instead of in tooltip

i'm trying to create some charts with google charts api. I need a bar chart with values placed directly on the chart (not on the tooltip which is set by default). I know that it was possible in Image Charts (which are now deprecated). Is there any way to achive a similar result in Google Charts? I will be grateful for any help or advice...
Here are some examples of what i want to achieve:
No, there isn't. See the answer in this question.
Quote follows:
This feature is not currently supported. The only way to implement it is to write some fancy javascript to create it.
I am no pro at working with SVG with javascript, and won't pretend to be. I'll let you know what I found out with Firebug, and share that.
Using this chart I inspected the SVG element that's created. It has 5 different <g> (I'm assuming group) elements.
g[1] contains information on the title.
g[2] contains the legend
g[3] contains the chart information (sub-groups with the chart
area, gridlines, series, axis label values, etc.) -- when a point is
selected, this shows the circle/double-circle for that point too
g[4] contains axis titles
g[5] contains the tooltips in two separate groups, but only on
mouseover
Here is the function in the code that gets triggered when you mouseover a point:
Y.Ov=function(a,b,c){a=new kv(a);var d=this.Mf.pk(Wj);b=b[zc](sd);d[w](this.Mf[sb](b[0]));for(var e=1;e<b[L];++e)d[w](this.Mf.pk(ti)),d[w](this.Mf[sb](b[e]));Qt(d,c);a.t()[w](d);a.Zz(100);a.Yz(100);this.on[y](a);return a};Y.appendChild=function(a,b){if(b){var c;if(b[Bc]==Sv){if(!b.Th())return;c=b.t()}else c=b;a.t()[w](c)}};Y.replaceChild=function(a,b,c){a.t().replaceChild(b,c);Cu(c)};Y.Fg=function(a){a.Th()&&this.xs(a.t())};Y.xs=function(a){this.Mf.Fg(a)};Y.ds=function(a){this.Mf.removeNode(a);Cu(a)};
This probably doesn't help you. I can't find any easy way to create a workaround for this (oh-so-needed) feature. Sorry there's no solution yet!