mindok / contex

Charting and graphing library for Elixir
https://contex-charts.org/
MIT License
696 stars 54 forks source link

Problem with negative values for barchart #95

Open boon-wego opened 4 months ago

boon-wego commented 4 months ago

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
JoshAusHessen commented 3 months ago

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

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.