D3.js Bar Chart axis label having select box - drop-down-menu

We have requirement to add drop down with axis label so that user can change the data from there.We require this drop down box effect on only specific label.
One approach we have tried is to add svg:image with label and the functionality is working fine but the other label is having the down arrow image that is not required. So can anybody help me out how I can select only one label? Actually there are multiple labels and its index is getting changed on chart update. Please find below code which is working for adding images to all labels.
e.g.
g.selectAll('.nv-x.nv-axis').selectAll('.tick.major').append("svg:image").
on("click", click)
.attr("xlink:href", "images/top-bar-logo.png")
.attr("width", 20)
.attr("height", 20).attr("x", -20);

You can use the filter() function to select the ticks that you need to append the image to. The documentation I've linked to has a few examples -- you might be able to do it without filter() by passing a different selector to selectAll().

Related

Linked tooltip on heatmap and sparkline

I created a heatmap and sparklines next to the heatmap.
HERE the Plunker
Now I would like that when the user hovers over a cell of the heatmap, a red dot is displayed on the corresponding sparkline.
On the other hand, when the user hovers over the sparkline, the corresponding cell in the heatmap is highlighted.
I hope it's clearer with some drawings:
I thought I could change the code at this point:
var cells = svg.selectAll('rect')
.data(data)
.enter()
.append('g')
.append('rect')
//...
.on('mouseover', tip.show) // <- HERE
.on('mouseout', tip.hide);
I should keep track of the rectangle on which the mouse is located and somehow pass this data to the piece of code that controls the sparkline.
But I don't really know how to do it and I have not found similar examples.
Thanks!
HERE MY PLUNKER
add this liblary:
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
To solve your problem, you need understand the concept,
The D3 can holding data when you put on it
The D3 can select base on class and id
The DOM element can hold attribute (Ex: attr-id)
Scale linear can be invers, that mean if you have domain you can have range and if you have range you can have domain
Element that draw with D3 is updatable & deletable
understand the liblary you use (d3-tip)
What i Change
i add class and id to element i want to select
if i want to use data, i save data to data-attribute
i make function to track my mouse on Line-chart, and invers it to get value
i draw object tip i want to use
read the code if you want to understand ask me which line you dont understand, if you need explanation

Amcharts legend dynamic resizing

I want my legend to adjust itslef according to the amount of data that is coming in like highcharts . For example if I have only one legend I don't wanna legend to take the length as the div itself and I also have multiple pods .if there are a lot of legends I want it to have scrollbar instead now it's reducing the size of the chart itself.
Pls give your valuable inputs .
You can have the Legend rendered inside a defined Element referring to it using divId.
Then just make sure your legend element is setup to use scrollbars.
Please check the example here: https://codepen.io/team/amcharts/pen/dac1c66de18a50661c8195d4b792a30c

How to add text to D3 js donut chart

I have the following donut chart here in d3.js
Please see here: <https://jsfiddle.net/jz9z9hw1/>
I am unsure of how to add text right in the centre of the donut. I'd like it to say "Test System 1".
Also, how does one go about adding text within the arcs? So, it would display the actual numbers?
Just add a text element to your SVG, like this. I added this to your fiddle, and it added the text right in the middle:
var text = svg.append('text')
.text('Test System 1')
.attr('text-anchor', 'middle')

Invert nvd3.js legend click function

So, in nvd3 charts, clicking on a legend entry basically filters that out of the chart window (for instance in the case of area charts). I want to invert this functionality..i.e. show the particular chart when its corresponding legend is shown and hide all the others...is there a way to do it?
It is similar to what happens when user hits the chart itself (i.e. only the one that is clicked is expanded and rest of the streams hide).
I am referring to this example: http://nvd3.org/ghpages/stackedArea.html
There's a radioButtonMode that should do exactly what you want. You should be able to set this on the chart, i.e.
chart.radioButtonMode(true);

How can add text to the center of a D3 sunburst diagram

I am using the zoomable sunburst example but I am struggling trying to add a text to the center of the diagram and still make it zoomable.
The idea is that the text in the center will change when I click on a certain arc indicating its length. It seems that the properties of the mouseclick and mouseover dissapear.
This is what I have tried:
path.append("svg:text")
.on("click",click)
.style("font-size","4em")
.style("font-weight","bold")
.text(function(d) { return count_function(data); });
Can someone help me understand how to display the text in th center of the chart without losing the click functionality?
Maybe an easier approach would be to select the "g" that represents the circular centre and add text to it once the chart was been displayed. I have tried this but I am unable to successfylly select just this element (sorry I am new to D3), so back to square one.
It looks like you're trying to insert a text element inside a path element. Try something like this:
svg.select("g").append("svg:text")
.on("click",click)
.style("font-size","4em")
.style("font-weight","bold")
.text(function(d) { return count_function(data); });

Resources