-
Notifications
You must be signed in to change notification settings - Fork 243
Description
Description
I would really like an option to hide nil bars. Perhaps this is an unconventional use case, but I am trying to show intensity of a variable over time on a bar chart.
I could also achieve this if it were possible to style individual bars and fully customize the legend, however it doesn't appear to be possible to assign colors to bars within a single dataset either.
Steps to Reproduce
data = [
[0.5, "00:00", "#07A6FF", "nominal"],
[0.64, "00:20", "#FFA500", "marginal"],
[0.75, "00:40", "#FFA500", "marginal"],
[1.0, "01:00", "#FF0000", "failed"]
]
intervals = data.map(&:second)
intensities = data.map(&:last).uniq
g = Gruff::Bar.new
colors = ["#07A6FF","#FFA500", "#FF0000"]
g.theme = {
colors: colors,
marker_color: '#dddddd',
font_color: 'black',
background_colors: 'white'
}
g.labels = intervals
intensities.each do |intensity|
g.data(intensity, data.map { |i| i.first if i.last == intensity })
end
This results in wonky spacing because it draws the nil datapoints for each set. But I only want to draw one set per label.

Additionally there is no way to assign a color to each bar without assigning separate datasets.
Would it be possible to add support for hiding empty bars and their spacing?
Apologies if I'm missing something. I thought for sure it could be done with the library in it's current state since it is very capable, but I've spent a good amount of time tinkering with this and can't figure it out with existing methods.
System Configuration
- ImageMagick version: ImageMagick 7.1.1-8 Q16-HDRI aarch64 21129
- RMagick version: 5.2.0
- Gruff version: 0.22.0
- Ruby version: 2.7.2
- Environment (Operating system, version and so on): Mac Ventura 13.3.1