contex icon indicating copy to clipboard operation
contex copied to clipboard

Problem with negative values for barchart

Open boon-wego opened this issue 1 year ago • 2 comments

I am having problem displaying barchart with negative values.

I tried to see if anyone has already reported this issue. But judging from https://github.com/mindok/contex/issues/91 it seems negative values is supported all along.

I'm using Contex version 0.5.0

Code

data = [
      ["A", -10.0],
      ["B", 20.0],
      ["C", -50.0]
    ]

    dataset = Contex.Dataset.new(data, ["X", "Y"])

    options = [
      mapping: %{category_col: "X", value_cols: ["Y"]},
      type: :stacked,
      data_labels: true,
      orientation: :vertical
    ]

    chart =
      Contex.Plot.new(dataset, Contex.BarChart, 600, 400, options)
      |> Contex.Plot.titles("", "")
      |> Contex.Plot.axis_labels("", "")
      |> Contex.Plot.plot_options(%{})
      |> Contex.Plot.to_svg()

Result

Screenshot 2024-04-17 at 7 17 14 PM

boon-wego avatar Apr 17 '24 11:04 boon-wego

Hi, you are using the type: :stacked. I think if you are using the type: :grouped your chart would look like the ones in issue #91

For stacked bar charts negative numbers would be more complicated. I think currently stacked charts use deltas. so the second bar of the same category starts at the end of the first bar. If there would be something like :stacked_absolute that would

  • accept absolute values rather than deltas
  • draw all bars originating from 0 rather than the end of the last bar
  • draw the largest bar first so that smaller ones aren't completely hidden

one could display negative numbers similar to #91, but stacked.

I actually have a use case for that myself, I will give it a shot to implement that.

JoshAusHessen avatar May 04 '24 10:05 JoshAusHessen