score:3
this is an interesting question: normally, the answer here would be just "select the div you want by id or any other css selector that suits you" (or, since that this has been answered many many times, just a comment and a vote to close). the basis for that answer is that this...
var svg = d3.select("body").append("svg")
... will append the svg at the end of the body. so far, nothing new or difficult.
but why did i said that this is an interesting question?
because of the funny way (if you don't mind me saying so) you tried to select the div: you thought that d3 would create the chart inside that div just by putting the respective script inside it.
of course putting the script inside the container div is not the way of doing this. but just for the sake of curiosity, there is a way of doing what you thought you were doing (again, selecting the element that contains the script): by using document.currentscript, which:
returns the element whose script is currently being processed.
so, all we need in your situation is:
var container = document.currentscript.parentnode;
var svg = d3.select(container)
.append("svg")
//etc...
which appends the svg in the <div>
(or any other containing element) that contains the <script>
.
here is a basic demo:
<script src="https://d3js.org/d3.v5.min.js"></script>
<div>
<h3>i am div 1</h3>
</div>
<div>
<h3>i am div 2, i have a chart</h3>
<script>
var container = document.currentscript.parentnode;
var svg = d3.select(container)
.append("svg");
var data = d3.range(10).map(d => math.random() * 150);
var scale = d3.scaleband()
.domain(data)
.range([0, 300])
.padding(0.4);
var bars = svg.selectall(null)
.data(data)
.enter()
.append("rect")
.style("fill", "steelblue")
.attr("x", d => scale(d))
.attr("width", scale.bandwidth())
.attr("height", d => 150 - d)
.attr("y", number)
</script>
</div>
<div>
<h3>i am div 3</h3>
</div>
<div>
<h3>i am div 4</h3>
</div>
note that document.currentscript
doesn't work on ie (if you care for ie, just give the div an id and select it).
Source: stackoverflow.com
Related Query
- How to add a d3js graph in slideshow instead of body?
- How to add a click event on nvd3.js graph
- d3.js: How to add labels to scatter points on graph
- How to add a title for a NVD3.js graph
- How to add label to edges in d3 graph
- d3js v4: Add nodes to force-directed graph
- How do i add two different shapes to D3 forced directed graph based on shape field value?
- How to add a dynamic legend to a D3 force directed graph in Apex?
- how do i add a zoom in and zoom out button in a graph on d3
- How to add custom colors in D3 nodes of a graph
- How to add a line graph to a scatterplot using d3?
- How to Integrate a data-driven d3JS graph with Shiny?
- In R plotly d3js how to format a number with space instead of comma?
- How to add an if condition in my d3js example
- D3js code when called twice duplicates the graph instead of refreshing
- how to add mouse events to force directed graph using the d3 canvas renderer?
- How do I add a click event to a directed graph using dagre d3.js(javascript library)?
- How to add icons in dc.js piechart slices instead texts
- How can I add different images instead of text inside d3.js piechart slices
- How do I add a title attribute to the nodes of my force-directed graph generated by d3?
- How to add svg rectangles as background behind axis tick labels in d3js if ticks are inside chart
- d3 v4 how to add data labels to bar graph
- How to add a legend to a discrete bar graph in nvd3?
- Add a static/definite legend in D3JS graph
- How do you add multiple lines to a D3JS line chart where the depedent variable data sources start at different positions along the range?
- Add count beside bar graph d3js
- How to make d3js force directed graph less shaky when a node is dragged?
- How to Add Image to Circle Dynamically in D3js
- how to add tooltip for donut chart in loop using d3js
- I am trying to build a d3js graph but on the x-axis i am getting the timestamps instead of date and time even after i used formatting
More Query from same tag
- Animating angular d3 donut on load
- d3.js Gantt chart
- x axis domain issue in D3 Line chart
- How to align d3.linearScale()in the center of the page?
- d3.csv function can not load data correctly
- d3.js node translation does not work when changed the node to image
- Bind only new data points for performance optimization
- Why doesn't my d3.js line chart work?
- d3 returns error `e is not a function` while passing nest data to d3.stack
- Datamaps: how to show popup on mouseover AND customize the mouseover event listener
- 2 D3.js bar charts on the same HTML. One D3 script breaks the other
- Adding a hover tool tip bubble chart in d3
- Line Plus Bar with Multi Bars?
- last y-axis label getting cut off
- Chaining transitions using the transition.end() promise
- How to Place labels and give color range by number
- using json data in a flask endpoint for d3 script
- How can I fill gaps in a dc.js series chart?
- Replace d3.js symbols with images
- How to make sense of `Zero-fill right shift` (`>>>`) in `d3.bisector` source code?
- d3.js d3.json is not working - how to make this function work?
- Using D3.js, How can I detect when a point on an animating line is reached?
- Is there any way to customize the color of text on an axis on an svg element?
- Is there a way to change the fill of a Cell in a Bar Chart on Hover? - Recharts
- D3 js Force Directed Graph - highlight path between two points
- d3.js - shading effect doesn't work fine in google chrome
- Programmatically adjusting d3 brush with animation
- d3.js: Unusual Error
- Y axis label not displaying large numbers - Multi-Bar Chart
- d3.attrTween() not animating smoothly