I'm using the Grouped Bar Chart(http://bl.ocks.org/mbostock/3887051), but the text of the x-axis is very long, as shown in attached picture. How to rotate the text? Thank you.
To rotate x-axis text labels, we use “axis. text. x” as argument to theme() function. And we specify “element_text(angle = 90)” to rotate the x-axis text by an angle 90 degree.
Rotate X-Axis Tick Labels in Matplotlib There are two ways to go about it - change it on the Figure-level using plt. xticks() or change it on an Axes-level by using tick. set_rotation() individually, or even by using ax. set_xticklabels() and ax.
A reasonable solution can be found here
The result looks like this:
Make sure you fully understand this portion of code:
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", "rotate(-65)");
-65
is the angle the label text is rotated, in degrees.
Also, you should increase margin at the bottom, so that the rotated text doesn't get clipped.
WARNING: Rotated text is inevitably rendered by browsers at the end (D3 just creates appropriate svg that is interpreted by browsers), and they do a lousy job rendering rotated text (as opposed to lets say advanced drawing or diagramming software).
Also, related StackOverflow questions:
rotate-x-axis-text-in-d3
how-to-rotate-x-axis-text-in-dimple-js
You might want to consider using D3FC, which has a drop-in replacement for the D3 axis component that supports this feature.
D3FC has an adapter component that will automatically rotate axis labels if they collide:
const axis = fc.axisLabelRotate(fc.axisOrdinalBottom(foodScale));
Here it is in action:
Full disclosure - I am a maintainer and contributor to the D3FC library!
Use SVG transform attribute rotate,
This transform definition specifies a rotation by a degrees about a given point
Try this code :
DEMO
svg.append("g") // Add the X Axis
.attr("class", "x axis")
.attr("id", "x")
.attr("transform", "translate(0," + (h) + ")")
.call(xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", function (d) {
return "rotate(-30)";
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With