in highcharts, how can I align legend symbol and legend text? - highcharts

As you can see in the jsfiddle example, the legend symbol is not aligned with the legend text.
Is there a way to set some padding or margin so the text can be vertically aligned to top or something?
http://jsfiddle.net/daxu/md2zk/62/
legend: {
layout: 'vertical',
itemMarginTop: 20,
symbolHeight: 5,
symbolWidth:5,
itemStyle: {
color: 'black',
fontFamily: 'DINPro',
fontSize: '7.8409px',
fontWeight: 'normal',
display:'inline-block',
verticalalign:'top'
},
align: 'right',
verticalAlign: 'middle',
floating: false,
x: 0,
y: 0
},

You have to set both legend: {useHTML:true, itemStyle: {lineHeight:"10px"}}
The lineHeight will change the text alignment to what you need. it worked in my case for horizontal legend.
See http://jsfiddle.net/md2zk/176/

Set useHTML flag as true in the legend.
Example: http://jsfiddle.net/md2zk/63/

Related

Highcharts legend is overlapping on to the graph area

I'm using highcharts to plot out a line graph of quite a few sections. I want the legend to be static at the bottom of the graph area. The height of the graph area can be fixed but the legends can change dynamically.
I'm using the below options in for legend object
legend: {
useHTML: true,
enabled: true,
reversed: false,
verticalAlign: 'bottom',
floating: true,
align: 'center',
padding: 10,
margin: 20,
itemDistance: 10,
itemStyle: {
'font-size': '14px',
'color': colors.greyDark,
'font-family': fonts.proximaNovaBold,
'letter-spacing': '0',
'line-height': '17px',
'text-align': 'center',
},
itemMarginBottom: 10,
x: 0,
y: 100
},
I have replicated it in the fiddle
https://jsfiddle.net/x496tLmf/1/
Is there any way to fix this and have the legends stuck to the bottom. All of them need to display as the graph will be exported as static image.
There are two main issues why the legend overlaps the chart:
When you manually set the chart margin, the chart won't reserve space for the legend.
When you enable the legend floating option, you explicitly allow legend for overlapping
API: https://api.highcharts.com/highcharts/legend.floating
The solution here is to remove the properties mentioned before and let the chart calculate the position of the legend.
However when you want to export this chart as a static image with all the legend items you have to specify the size of each element together with some overflow style to cut them a bit.
You might also reduce the spacing in between them, to increase the chart area.
legend: {
useHTML: true,
enabled: true,
reversed: false,
itemWidth:120,
itemStyle: {
'font-size': '14px',
'color': colors.greyDark,
'font-family': fonts.proximaNovaBold,
'letter-spacing': '0',
'line-height': '17px',
'text-align': 'center',
"textOverflow": "ellipsis"
},
},
API: https://api.highcharts.com/highcharts/legend.itemWidth
Live demo:
https://jsfiddle.net/BlackLabel/ef8rjkmL/

highcharts bar chart square legend

I could not find a solution to make bar chart legend turn from round to square. I saw a lot of solutions for line charts, which don't work for bar or pie charts. squareSymbol true doesn't work.
legend: {
layout: 'vertical',
align: 'right',
squareSymbol: true,
verticalAlign: 'middle',
floating: false,
borderWidth: 0,
backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || 'rgba(255, 255, 255, 0.0)'),
shadow: false,
}
You can make the legend bullet points squared by setting the symbolRadius to 0.
legend: {
symbolRadius: 0
},
JSFiddle
Set symbolRadius property to 0:
legend: {
symbolRadius: 0
}
Live demo: http://jsfiddle.net/BlackLabel/humnzs3j/
API: https://api.highcharts.com/highcharts/legend.symbolRadius

Increase the height of the legends in highcharts

How would I set the legend height so that it does not show the pagination below the legends?
code:
legend: {
align: 'right',
itemMarginBottom: 8,
labelFormatter: function() {//some func},
itemWidth: 290,
verticalAlign: 'top',
useHTML: true,
x: 95,
y:80
}
any ideas appreciated. Thanks!
FIDDLE: https://jsfiddle.net/ag6j7f6w/
You can increase the height & width of your chart.By doing so the pagination will not come up.
Increase the width: 600 & height: 650 of chart.

how to reduce/increase gap between horizontal legends- highcharts

I want to be able to increase/decrease the gap between legends split into 2 cols.
ex:
my legend is defined as follows:
legend: {
align: 'right',
itemMarginBottom: 8,
labelFormatter: function() {//some func},
itemWidth: 290,
verticalAlign: 'top',
useHTML: true,
x: 95,
y:80
}
is there any marginLeft/Right props to do so?
Thanks
See legend.itemDistance property.
itemDistance: Number
In a legend with horizontal layout, the itemDistance defines the pixel distance between each item. Defaults to 20.
ref: http://api.highcharts.com/highcharts/legend.itemDistance

Highchart reversed column data labels

I have a column chart with reversed yAxis:
jsFiddle
dataLabels: {
enabled: true,
color: 'white',
verticalAlign: "bottom",
y: 10,
style: {
fontSize: '8px',
fontFamily: 'Verdana, sans-serif',
textShadow: '0 0 3px black'
}
I want to show the data labels inside the column like in the jsFiddle example, but can't set the position to be near the top border like here or above the top border of each column.
How can I achieve it?
You need to set directly options for dataLabels to get them visible, see: http://jsfiddle.net/sX83S/2/
dataLabels: {
...
verticalAlign: "top",
overflow: true,
crop: false,
inside: true,
}
The problem you have is based on fact, that you change start point of yAxis. I don't know is it possible to achieve "top" in your case, because the column's don't have same start points but stop at the same finish point "150". This give something close result, but you should think further:
dataLabels: {
enabled: true,
color: "white",
rotation: -90, //optional
align: "left", // "right" or delete it at all
y:-150, //this is crucial
style: {
fontSize: '8px',
fontFamily: 'Verdana, sans-serif',
textShadow: '0 0 3px black'
}
},
So, anyway you should play with y ("y:-50" is the "top" level, "y:-150" is the "bottom" level) and figure out that meaning is different for all columns.
UPD.: As I understand you want to place it right on the edges of each columns, alas I'm not sure is that possible.

Resources