paulanthonywilson
For reasons I’ve been using the VegaLite to produce histograms and I’ve run into problems when I want an origin other than zero. For example, let’s say I’m interested in temperatures around the house in Kelvin.
data = [
%{location: "Fridge", temp: "277"},
%{location: "Office", temp: "292"},
%{location: "Garden", temp: "285"},
%{location: "Oven", temp: "453"}
]
Everything is fine if I go with the default Y scale.
Vl.new(width: 200, height: 159)
|> Vl.data_from_values(data)
|> Vl.mark(:bar)
|> Vl.encode_field(:x, "location", title: "Location (location, location)", axis: [label_angle: 0])
|> Vl.encode_field(:y, "temp", type: :quantitative, title: "Temperature (Kelvin)")
But my house rarely approaches absolute zero so I’d like to truncate the Y axis. From the VegaLite docs it looks like scale: [domain: [low, high]] should be just the job but the bars still want to start at zero.
Vl.new(width: 200, height: 150)
|> Vl.data_from_values(data)
|> Vl.mark(:bar)
|> Vl.encode_field(:x, "location", title: "Location (location, location)", axis: [label_angle: 0])
|> Vl.encode_field(:y, "temp",
type: :quantitative,
title: "Temperature (Kelvin)",
scale: [domain: [263, 500]]
)
Not pretty. I’ve tried fiddling with things like range but I can’t seem to do anything but occasionally end up with Stranger Things style upside down or compressed chart.
What does seem to help is adding an aggregate value but that seems hacky and impacts things like the toolbar text (which I can’t seem to change through the Elixir).
Vl.new(width: 200, height: 150)
|> Vl.data_from_values(data)
|> Vl.mark(:bar)
|> Vl.encode_field(:x, "location", title: "Location (location, location)", axis: [label_angle: 0])
|> Vl.encode_field(:y, "temp",
type: :quantitative,
title: "Temperature (Kelvin)",
scale: [domain: [263, 500]],
aggregate: :max
)
Does anyone have any other ideas? (Apart from use Celsius - it’s a placeholder for a different genuine reason to want to truncate the y axis).
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixir-ls
- #ai
- #elixirconf-us
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming














Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
paulanthonywilson
PS, I had similar overflow issues using Contex but I didn’t stick with it long enough to find any workaround.
NickGnd
Hey @paulanthonywilson
I found this example on vegalite docs
Have you tried to use set the option
clip: true?Hope it works

Cheers
paulanthonywilson
Nice - that is exactly the right thing. Thank you
PS -Total aside but LiveBook has been super useful in trying out this stuff
NickGnd
Glad that worked out!
True, that’s a game changer!