@@Steamrick Or use Fahrenheit, the better scale, and then in most cases not need to deal with negative numbers at all. And in the rare cases that you do, you switch to Rankine and preserve meaningful helper lines.
Matplotlib stacked bar chart allows (actually requires) you to specify both the start and the size of each rectangle you draw, so you can do this kind of plot pretty easily.
@@crazedvidmaker I highly agree. In the future every human should be required to know how to code. It's fundamental to humans today and the key of automation and technological advancement of the tomorrow. Coding shall be teached with the same importance as Language.
Also, I'd like to add that applications like Excel are basically "programming in a trench coat" anyways. Simple pyplot/pylab-style programming isn't really all that more advanced compared to the GUI-based alternatives. Once you get used to configuring stuff by writing text instead of clicking on buttons, you should be able to learn the basics pretty quickly.
@@Splarkszterlaughable, I agree computer skills are important but we are far far from it attaining common sense status, if ever. You could apply the same logic and say everyone should know how to make a PCB or how to design circuit logic or any number of other things essential to how we live today
@@HanmaHeiro The three point field goal was adopted by the NBA in 1979 for a trial season originally, before being adopted permanently that same season. Before that all shots that weren't a free throw were scored as a 2 point shot.
"Software" in this case referring to exclusively spreadsheet software, which (is meant to be (lol)) consumer software with a limited selection of simplified charts. Unfortunately it's use is far far more widespread than that in business and government (because it is, to be fair, very useful and easy to use), but those who actually have proper experience making papers or visualisations or so on will be using more advanced software with the ability to make this kind of graph very easily, and customise it in thousands more ways than you can even imagine.
wow! this makes so much sense! Let me file a feature request to the Google sheets team (via company internal portal) and see if they can prioritize this.
Long time watcher here. This actually exists in the HighCharts JavaScript graphing library as a "columnrange" type. To make it a "bar" just set inverted: false. There are wrapper/plugins for it for both R and Python.
As a Data Engineer, I very regularly have issues with this chart not existing. Usually for me it's a horizontal version of the chart, where X is time, Y is the categories and Z is phases of those categories. Sort of like a flat Gantt chart. I usually solve it by calculating a field to put the starting point of the charts to their minimum and making that field invisible by filling it with nothing. For example, if your data starts at 10 and goes to 50, I would have a field that has a value of 10 that is at the start of the dataset and has no fill, followed by the actual data.
In most cases, but not all. There are some data scenarios where the discrete measurements aren't basically the "min" to "max" that box and whiskers is used for.
Strong disagree. With boxplots you'd miss out on the clear intuition from the colors. And we are not showing a distribution of the monthly temps, rather the key breakpoints in temp from many years worth of monthly temps.
Actually you can modify by hand the numbers on both axis, just its very confusing. I hate that one of the biggest companys in the world cant fix those simple things.
This plot type isn't good for the London data (0:19 chart on right). It's not clear for example is the Ontario "Annual mean low" at -9? Or is it at 3? Or is it a range between those two? Basically, it's a bad idea to use a colored in box to plot a single value (here "Annual mean low" is actually at 3 according to table at 0:26)
Yeah this confuses me as well. Going by the legend, you would think all of the listed temperature minima, maxima and means are singular values, not ranges.
@@Pieter31 Not necessarily, after all, there are many years. For any given year, you take the average of all daily lows in that year. Since that average won't be the same for all years, you get a range. At least, I'm assuming that's the case here, but yes, the legend is a bit misleading if this was shown with no context. You might assume it's referring to the lowest annual mean (temperature) otherwise.
@@SaberToothPortilla No, read the table at 0:26, "Annual mean low" is a single number at 3, not a range. The fact that you mistook it for a range is exactly the point I'm trying to make. It's unintuitive and misleading.
I had the same exact confusion/observation, thank you! I would note that this is a pretty common occurrence in filled contour plots discretized into a few color bins, and I have always hated them for that reason.
I used to work in Excel a ton and made this chart all the time. You just added an extra category to create that offset and format it to be borderless and transparent.
@@christiannorf1680 Pretty much every time you want to put a professional level chart in Excel you end up with a hacky workaround. Speaking as someone who's made a career out of hacky Excel shenanigans 😉.
This is why ggplot is the superior plotting ecosystem. If I had to make this chart, I would have never even realized this was impossible in most plotting libraries. Through the 'grammar of graphics' ggplot provides this would have been quite simple to figure out.
There are a few ways to do so in R. The easiest option is HH::likert(). The other easy options use ggplot() via geom_crossbar(), geom_pointrange(), or geom_linerange(). Then it can be converted from ggplot2 to plotly using plotly::ggplotly(). I think there are other options via other geoms, but may not be as efficient.
Sounds a lot like a box and whisker plot, but with some special annotations beyond the traditional median/quartiles . Should be pretty easy to do exactly what you want in matplotlib :)
What he's describing seems to be intended for any number of gapless, non-overlapping categories in the y-axis. Sure, it exists, but I don't think I ever needed it. But it certainly wouldn't be very difficult to implement with matplotlib.
@@ikbintom I think that the chart he explains in the video also shows a distribution? It's actually really unclear to me, what is his version of the chart supposed to indicate *exactly*.
3:08 Yes!! As a teacher, I have tried to present data like this several times. It's really important to be able to visualise the changing composition and values of distributions over time.
What is "Annual mean high"? Specifically, what does the "high" indicate? "Mean" already implies that the result is a scalar, so what's the difference between "Annular mean" and "Annular mean high"?
In the us, weather is given to us as a high and low per day. A low of 35F and high of 60F means that ill need a jacket when leaving in the morning and not when I head home
As a wise man once said, the best way to generate online engagement is to post something that contains a mistake. The beauty of the science crowd is that they will perceive mistakes (or the need for improvement) in anything.
There are a few ways to do so in R. The easiest option is HH::likert(). The other easy options is ggplot() via geom_crossbar(), geom_pointrange(), or geom_linerange(). Then it can be converted from ggplot2 to plotly using plotly::ggplotly(). I believe there are other ways to do so in R, but may not be as efficient. Toy Example: df %>% ggplot() + geom_crossbar( aes( x = x, y = daily_mean, ymax = record_max, ymin = record_min, ), fill = "darkred", alpha = 0.1 ) + geom_crossbar( aes( x = x, y = daily_mean, ymax = mean_max, ymin = mean_min, ), fill = "darkred", alpha = 0.3 ) + geom_crossbar( aes( x = x, y = daily_mean, ymax = daily_max, ymin = daily_min, ), fill = "darkred", alpha = 0.5 ) + labs( x = "x", y = "y" ) + theme_test()
JMP is the only software I can think of that does something similar to this. I use it all the time at work. Super easy way to plot bars that'll still show the range of the data.
In excel you can do this with a stacked bar chart. You are very close to being on the right track at 1:36 but you just have to color your blue series transparent. If the data spans across positive to negative ranges, you may need to have two series of the same color that span this range from negative value to zero and then zero to positive value. I think all cases can be covered.
For those interested, latex plus tikz pgfplots does support stacked bar plots with negative values both for vertical and horizontal bar layouts. Admittedly, latex is neither a spreadsheet nor a terribly convenient tool to use. Then again, physicists are one of latex's natural user sources.
As far as I can see, the labels you are showing for each shaded region are wrong, the labels actually refer to the edges of the shaded regions, so the charts are not accurate representation of the data. Compare the values from the table at 0:27 and the chart at 0:17. The labels are actually correct in the "wrong" example at 0:52 (line chart before filling it in as an area chart) because the data points correspond to the dots on the lines, and so do the labels. The "fill" simply can't work because you'll get four shaded areas for 5 data points, so using the labels for the shaded areas would simply not match the actual labels in the data.
For the temperatures by month, plotting it with continuous areas is fine, since you make the assumption that the temperature in one month and the temperature in the next month are related to each other. Which they are, of course. But for different values of London, this range chart does make some more sense.
Stacked Range Bar Chart... this is EXACTLY what I was looking for when I was trying to plot the range of times it takes me to transform each Transformer...
After yelling most of day away, cursing about missing user roles, not correct inserted environment variables, 20 minute build times, basic script errors because scripts as to be in a yaml file in a github action, etc. I happy to see other peoples frustrations where I with comfort can say "I will never face that problem".
Am I the only one who finds the labels a bit confusing? They look as though they refer to the colored area, but really they refer to the upper bound of the respective area. But I see that its not easy to come up with an intuitive way of labeling the bounds.
I'm glad to know this chart is actually not supported in Excel, and I'm not just useless at using Excel's unintuitive and frustrating charting interface
I had the exact same problem a few months ago and had to give up and used a similarly weak workaround as you did. Everyone in the comments saying "yeah that should be easy with xyz" should specifically explain how to do it. Because, yes, it SHOULD be easy, but it is one of the problems that looks easy but actually is not. So would be happy to see a tutorial how to do it
3 area curve charts each average temperature over a year. Each chart clear colored line. Now we have a full year for each city clearly. Heck, add blue shading for rainfall or thicker line more rain
I do this the whole time. You absolutely can do it but you need to make some invisible series and add some calculations (and depe on exactly how you want it to look, potentially use a second hidden axis on the right. Agree it's too complicated (often what I'm trying to do is a waterfall chart where the bars represent change since the cumulative impact of all the previous bars. It can be done, but agree having it native would be very helpful.
Graphing software like KaleidaGraph or OriginPro can do this. You can probably also do this in Matlab. Spreadsheet software is meant for accountants not science. Excel tends to fall apart when data sets get larger than a few million points.
I always love watching your videos, and I don't want to come off as being overly critical, but... - The London data are all singular values, rather than ranges, so this type of plot is a bad fit. - The ranges of latitudes of continents can be easily done in Excel using Up/Down bars. - The Daylight hours in London all have only positive values and start at 0, so you can just use a stacked column chart. - The percentiles of grades is a textbook example of where you'd typically use a boxplot. - The last climate example is pretty much identical to the London example, with the same flaw. There may very well be examples where stacked range plots like these are the best option, but I did not see any in this video.
You can start stacked charts above zero by adding in an extra Data Series for the initial value but make its colour fill transparent (and hide its data label and title).
This is funny because I was just having this problem yesterday. I have a set of values, some of which are negative, and I want to show how they add up to the total value. In my case, it is profit of various business units that I want to add up to total profit. The main way to show the ups and downs would be a waterfall chart, which are already more difficult than they need to be to make in Excel. However it want to show multiple months or quarters side by side. I ended up just drawing the chart manually because it was taking too long to figure out how to trick Excel.
You can still do that for real in Excel if you customize it a bit, but I understand what you mean, it should be easy and it's indeed a very useful type of graph.
I have seen these types of Charts been used in electricity generation. My Home Assistant has this function and uses it to display the energy I got from the grid, from my solar generation and what did go back into the grid from my solar. Also many studies use it to show what type of generation is cheaper (Solar), for example Frauenhofer ISE uses them.
The percentile grade distribution is a rather bad example, because it is literally just a box plot turned into bars. Not only can you easily make box plot in those programs I even teach my 8th and 9th graders how to make them and read them.
I never realized South America was both north & south of Australia (3:00). I thought Australia & New Zealand were further south. Guess the chart's useful.
That's why I usually program this sort of things in Python, with matplotlib . It's so discrete that the numbers area easily feed into the program and the matplotlib library does the rest. I almost never use spreadsheets.
I wrote a program ~30 years ago (that I am still working on) for the company I work for, a financial service firm that caters to institutional investors. The program is a tool for analyzing investment performance. I would guess that 85% of the charts made in the program are floating bar charts.
You can make a floating bar in a spreadsheet program by adding a spacer at the bottom and making it invisible. However it is not a straight path from concept to chart, as it should be... and yes, we have called it a Floating Bar Chart for over 40 years.
It has been a second. But I believe Power BI and Tableau actually have this chart. These are statistical visualization programs and therefore can both do static and dynamic charts.
Agree it is not directly available in, say, Excel - and it should be - but it can be created without "photoshopping" the axis … as I just made it in Excel in about 5 minutes. It does require "helper / blank" rows to be created.
I think you need a scatter pie plot chart with each point in the scatter plot being a pie chart. Additionally these could be animated which would allow for a third axis (perhaps representing time) so that we can visualize the change of our "scatterpies" In seriousness - this looks like a fun chart to build as an extension for PowerBI or Looker Studio - I'm guessing Google Sheets could have one but idk about Excel - that place is not fun to do development in...
I manage the data visualization system for a data platform for a certain space faring government agency, and our system does support these charts!! But you might not know it from looking at it as the bar charts will not only accept single values but also ranges. Given the software our system is built in is open sourced I wonder how many other systems already just support ranges.
A boxplot or violin plot are very good versions of this when you have actual data and not summary statistics. Im not sure in real life when you'd encounter the scenarios of summary statistics but no data
Tableau did this years ago. Or see many resources even for Excel. e.g. Jon Peltiers multiple methods for managing this easily in every version of Excel from '95 onwards. It's just a matter of laying out your data correctly.
2:04 instead of adding an arbitrary number you could instead convert all temperature values to kelvin. Then you would have the same scale but never have negative numbers. I think this type of chart is one of many that show that charting programs like excel really are insufficient for many charting activities and people should learn more advanced charting software. Matplotlib, ggplot, and HighCharts have been mentioned in comments. I think of it like the difference between using excel vs having an actual database you can get by with excel to a point but eventually everything you try to do with excel will be done better and easier with an actual database.
I was doing this exact thing, not Londons, different cities, last week, and ran into the same problem. Ended up trying a box plot but it was unsatisfying. I gave up and ended up playing guitar instead. Good trade off
Definetly missing is a proper Histograms, where some groups can be combined because separely the are small, so are combined, but now this total is unfairly represented because it is a wider group. In this we want vertical height considers the width of a bar => area=freq=width x height. So we plot a group showing its width, and the freq. Dens. = freq / group width... FX stats managed this, but not excel/gopgle sheets/apple number now this is worrysome Geogebra and Desmos.
Omg yes - I've literally done stupid formulas with extra series of the same colour to make a chart like this work, which of course then breaks in certain circumstances
You can get around the negative number problem by splitting the one that crosses the 0 axis into two entries - one for the negative component and one for the positive component - and just setting them to exactly the same color. It's annoying, but it should at the very least create the visual you're going for? As for starting above 0, you'd have to make filler sections that span each tick line that match the background color? That one's definitely harder
Weird, I wonder if any Older software has had this functionality. Seams to me like it would have been inexcusable when creating a name for that kinda software, but easily overlooked once a userbase in established
This is a bad day at the office turned into a video rant 😂
Instead of "this meeting could have been an email" we upgrade to "this meeting could have been a UA-cam video rant"
2:05 "...add a really big number..."
And, given this choice, you seriously add 100 instead of 273.16?
Underrated comment.
This is exactly how i implement this issue in my college; and override the labels from K to C
Because then you've got the helper lines at really odd places
This!
@@Steamrick Or use Fahrenheit, the better scale, and then in most cases not need to deal with negative numbers at all. And in the rare cases that you do, you switch to Rankine and preserve meaningful helper lines.
The one and only time London Ontario will be mentioned outside of London Ontario
Not Just Bikes also mentions it regularly :)
Today I learned about London Kentucky
@@adrianburmester1159but it’s Fake London
@@adrianburmester1159 he's from that fake London so it doesn't count as being outside
I'm a hockey fan from Arizona, I talk about London Ontario from time to time
I love how you managed to make "London" into an axis
And an existential crisis! 😂
Matplotlib stacked bar chart allows (actually requires) you to specify both the start and the size of each rectangle you draw, so you can do this kind of plot pretty easily.
True, but he probably meant without coding
Any programming tool let's you do this with ease, it is essensial in data analysis where you need to display certainty using error range.
@@crazedvidmaker I highly agree.
In the future every human should be required to know how to code. It's fundamental to humans today and the key of automation and technological advancement of the tomorrow.
Coding shall be teached with the same importance as Language.
Also, I'd like to add that applications like Excel are basically "programming in a trench coat" anyways. Simple pyplot/pylab-style programming isn't really all that more advanced compared to the GUI-based alternatives. Once you get used to configuring stuff by writing text instead of clicking on buttons, you should be able to learn the basics pretty quickly.
@@Splarkszterlaughable, I agree computer skills are important but we are far far from it attaining common sense status, if ever. You could apply the same logic and say everyone should know how to make a PCB or how to design circuit logic or any number of other things essential to how we live today
This belongs in the "How did it take decades for basketball to figure out the 3-point shot" bucket, but for software.
What's the stpry behind the 3-point shot? Where all baskets only worth 2 points before then?
@@HanmaHeiro The three point field goal was adopted by the NBA in 1979 for a trial season originally, before being adopted permanently that same season. Before that all shots that weren't a free throw were scored as a 2 point shot.
@randomDisinformation13 wow, had no idea. Thanks!
how did it take them decades to ruin basketball?
"Software" in this case referring to exclusively spreadsheet software, which (is meant to be (lol)) consumer software with a limited selection of simplified charts. Unfortunately it's use is far far more widespread than that in business and government (because it is, to be fair, very useful and easy to use), but those who actually have proper experience making papers or visualisations or so on will be using more advanced software with the ability to make this kind of graph very easily, and customise it in thousands more ways than you can even imagine.
wow! this makes so much sense!
Let me file a feature request to the Google sheets team (via company internal portal) and see if they can prioritize this.
Long time watcher here. This actually exists in the HighCharts JavaScript graphing library as a "columnrange" type. To make it a "bar" just set inverted: false. There are wrapper/plugins for it for both R and Python.
why do we need to know that you've been watching these videos for a long time?
As a Data Engineer, I very regularly have issues with this chart not existing. Usually for me it's a horizontal version of the chart, where X is time, Y is the categories and Z is phases of those categories. Sort of like a flat Gantt chart. I usually solve it by calculating a field to put the starting point of the charts to their minimum and making that field invisible by filling it with nothing. For example, if your data starts at 10 and goes to 50, I would have a field that has a value of 10 that is at the start of the dataset and has no fill, followed by the actual data.
To be fair, the best choice for this data would be a box and whiskers plot.
In most cases, but not all. There are some data scenarios where the discrete measurements aren't basically the "min" to "max" that box and whiskers is used for.
Strong disagree. With boxplots you'd miss out on the clear intuition from the colors. And we are not showing a distribution of the monthly temps, rather the key breakpoints in temp from many years worth of monthly temps.
I'm getting semantically satiated by the word "plot". Plot. Plot. Plot.
Lost the plot, eh?
Actually you can modify by hand the numbers on both axis, just its very confusing. I hate that one of the biggest companys in the world cant fix those simple things.
A new form of plot twist! :)
I guess plotting those plots have made you lose the plot.
Oh _that's_ what that's called!?
This plot type isn't good for the London data (0:19 chart on right). It's not clear for example is the Ontario "Annual mean low" at -9? Or is it at 3? Or is it a range between those two? Basically, it's a bad idea to use a colored in box to plot a single value (here "Annual mean low" is actually at 3 according to table at 0:26)
That's a good point!
Yeah this confuses me as well. Going by the legend, you would think all of the listed temperature minima, maxima and means are singular values, not ranges.
@@Pieter31 Not necessarily, after all, there are many years.
For any given year, you take the average of all daily lows in that year. Since that average won't be the same for all years, you get a range.
At least, I'm assuming that's the case here, but yes, the legend is a bit misleading if this was shown with no context. You might assume it's referring to the lowest annual mean (temperature) otherwise.
@@SaberToothPortilla No, read the table at 0:26, "Annual mean low" is a single number at 3, not a range. The fact that you mistook it for a range is exactly the point I'm trying to make. It's unintuitive and misleading.
I had the same exact confusion/observation, thank you! I would note that this is a pretty common occurrence in filled contour plots discretized into a few color bins, and I have always hated them for that reason.
I used to work in Excel a ton and made this chart all the time. You just added an extra category to create that offset and format it to be borderless and transparent.
This is what I do as well. Invisible first category with a common minimum, and deltas thereafter
The problem remains that it is a hacky workaround
@@christiannorf1680 Pretty much every time you want to put a professional level chart in Excel you end up with a hacky workaround. Speaking as someone who's made a career out of hacky Excel shenanigans 😉.
This is why ggplot is the superior plotting ecosystem. If I had to make this chart, I would have never even realized this was impossible in most plotting libraries. Through the 'grammar of graphics' ggplot provides this would have been quite simple to figure out.
I was thinking throughout the video "there must be a way using ggplot". I'm glad I use R and this package instead of excel.
I was thinking if that is not directly in ggplot, maybe there is a way using geom_segment
He included plotly in the thumbnail for some reason, plotly has an R/ggplot api...
There are a few ways to do so in R. The easiest option is HH::likert(). The other easy options use ggplot() via geom_crossbar(), geom_pointrange(), or geom_linerange(). Then it can be converted from ggplot2 to plotly using plotly::ggplotly(). I think there are other options via other geoms, but may not be as efficient.
Toy Example:
df %
ggplot() +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = record_max,
ymin = record_min,
),
fill = "darkred",
alpha = 0.1
) +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = mean_max,
ymin = mean_min,
),
fill = "darkred",
alpha = 0.3
) +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = daily_max,
ymin = daily_min,
),
fill = "darkred",
alpha = 0.5
) +
labs(
x = "x",
y = "y"
) +
theme_test()
my dude. that is just a fancy box and whisker plot
Was about to say the same thing.
It makes sense that your profile picture is a cat, since cats love boxes and have whiskers. 😉
Only if you have 5 values per X-axis element. Which some of the examples did, but not all.
Sounds a lot like a box and whisker plot, but with some special annotations beyond the traditional median/quartiles .
Should be pretty easy to do exactly what you want in matplotlib :)
What he's describing seems to be intended for any number of gapless, non-overlapping categories in the y-axis.
Sure, it exists, but I don't think I ever needed it. But it certainly wouldn't be very difficult to implement with matplotlib.
Box and whisker plot...?
Shows a distribution right? Seems different
@@ikbintom I think that the chart he explains in the video also shows a distribution? It's actually really unclear to me, what is his version of the chart supposed to indicate *exactly*.
Only works for 5 values (Upper limit, upper quartile, median, lower quartile, lower limit), not if yolu have any other number of values
@@squeaksquawk4255 Correct, but that makes his grade example bad, because it is literally just a box plot with exactly 5 values.
@@Bronzescorpion3:17 imagine a set of graphs that the box plot is an element of that set.
3:08 Yes!! As a teacher, I have tried to present data like this several times. It's really important to be able to visualise the changing composition and values of distributions over time.
What is "Annual mean high"? Specifically, what does the "high" indicate? "Mean" already implies that the result is a scalar, so what's the difference between "Annular mean" and "Annular mean high"?
I assume it means "average maximum daily temperature".
In the us, weather is given to us as a high and low per day. A low of 35F and high of 60F means that ill need a jacket when leaving in the morning and not when I head home
Depends on the quality of the herb.😜
Weather is usually given in a range. The high mean is probably the average of all the high ends of the range
Yeah, here high isn't a qualifier on mean, but rather a noun in itself, it's jargon (Americanism?) for "daily highest temperature", ditto for low.
It’s neat how many people are confidently asserting incorrect (or incomplete) solutions here. Feels very StackOverflow
and gatekeeping what people comment, very very stackoverflowy
[This comment is closed]
As a wise man once said, the best way to generate online engagement is to post something that contains a mistake. The beauty of the science crowd is that they will perceive mistakes (or the need for improvement) in anything.
@@backwashjoe7864 This is known as Cunninghams law. Rather fun is to refer to this as Murphy's law and someone will come and correct you
There are a few ways to do so in R. The easiest option is HH::likert(). The other easy options is ggplot() via geom_crossbar(), geom_pointrange(), or geom_linerange(). Then it can be converted from ggplot2 to plotly using plotly::ggplotly(). I believe there are other ways to do so in R, but may not be as efficient.
Toy Example:
df %>%
ggplot() +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = record_max,
ymin = record_min,
),
fill = "darkred",
alpha = 0.1
) +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = mean_max,
ymin = mean_min,
),
fill = "darkred",
alpha = 0.3
) +
geom_crossbar(
aes(
x = x,
y = daily_mean,
ymax = daily_max,
ymin = daily_min,
),
fill = "darkred",
alpha = 0.5
) +
labs(
x = "x",
y = "y"
) +
theme_test()
JMP is the only software I can think of that does something similar to this. I use it all the time at work. Super easy way to plot bars that'll still show the range of the data.
Watching this from London, KY
There is also: London, Kiribati :)
In excel you can do this with a stacked bar chart. You are very close to being on the right track at 1:36 but you just have to color your blue series transparent. If the data spans across positive to negative ranges, you may need to have two series of the same color that span this range from negative value to zero and then zero to positive value. I think all cases can be covered.
It is probably out of scope for most people, but this is so easy to do in Matlab. But if you aren't an engineer you will probably hate it.
For those interested, latex plus tikz pgfplots does support stacked bar plots with negative values both for vertical and horizontal bar layouts. Admittedly, latex is neither a spreadsheet nor a terribly convenient tool to use. Then again, physicists are one of latex's natural user sources.
draw chart on paint > save as png > import image.
As far as I can see, the labels you are showing for each shaded region are wrong, the labels actually refer to the edges of the shaded regions, so the charts are not accurate representation of the data. Compare the values from the table at 0:27 and the chart at 0:17. The labels are actually correct in the "wrong" example at 0:52 (line chart before filling it in as an area chart) because the data points correspond to the dots on the lines, and so do the labels. The "fill" simply can't work because you'll get four shaded areas for 5 data points, so using the labels for the shaded areas would simply not match the actual labels in the data.
For the temperatures by month, plotting it with continuous areas is fine, since you make the assumption that the temperature in one month and the temperature in the next month are related to each other. Which they are, of course. But for different values of London, this range chart does make some more sense.
Stacked Range Bar Chart... this is EXACTLY what I was looking for when I was trying to plot the range of times it takes me to transform each Transformer...
After yelling most of day away, cursing about missing user roles, not correct inserted environment variables, 20 minute build times, basic script errors because scripts as to be in a yaml file in a github action, etc. I happy to see other peoples frustrations where I with comfort can say "I will never face that problem".
2:36 That cut scared the shit out of me.
Havent watched any video of you in years, but this one caught my eye. Kind of crazy how fast the talking/explanation is, but we can play it slowmo 😅
As a guy who spends 90% of his day doing data visualization in Excel, I wholeheartedly support this sentiment.
Yay London Ontario! Thanks for the shoutout, and for using Celsius for your temperatures!
Am I the only one who finds the labels a bit confusing? They look as though they refer to the colored area, but really they refer to the upper bound of the respective area. But I see that its not easy to come up with an intuitive way of labeling the bounds.
The amount of physics per minute is unchartable here
I'm glad to know this chart is actually not supported in Excel, and I'm not just useless at using Excel's unintuitive and frustrating charting interface
I live for this exact variety of programming issue
This reminds me of trying with increasing frustration how to draw a simple box-and-whisker graph in various programs.
I had the exact same problem a few months ago and had to give up and used a similarly weak workaround as you did. Everyone in the comments saying "yeah that should be easy with xyz" should specifically explain how to do it. Because, yes, it SHOULD be easy, but it is one of the problems that looks easy but actually is not. So would be happy to see a tutorial how to do it
3 area curve charts each average temperature over a year.
Each chart clear colored line.
Now we have a full year for each city clearly. Heck, add blue shading for rainfall or thicker line more rain
I do this the whole time. You absolutely can do it but you need to make some invisible series and add some calculations (and depe on exactly how you want it to look, potentially use a second hidden axis on the right. Agree it's too complicated (often what I'm trying to do is a waterfall chart where the bars represent change since the cumulative impact of all the previous bars. It can be done, but agree having it native would be very helpful.
Graphing software like KaleidaGraph or OriginPro can do this. You can probably also do this in Matlab. Spreadsheet software is meant for accountants not science. Excel tends to fall apart when data sets get larger than a few million points.
I always love watching your videos, and I don't want to come off as being overly critical, but...
- The London data are all singular values, rather than ranges, so this type of plot is a bad fit.
- The ranges of latitudes of continents can be easily done in Excel using Up/Down bars.
- The Daylight hours in London all have only positive values and start at 0, so you can just use a stacked column chart.
- The percentiles of grades is a textbook example of where you'd typically use a boxplot.
- The last climate example is pretty much identical to the London example, with the same flaw.
There may very well be examples where stacked range plots like these are the best option, but I did not see any in this video.
You can start stacked charts above zero by adding in an extra Data Series for the initial value but make its colour fill transparent (and hide its data label and title).
This is funny because I was just having this problem yesterday. I have a set of values, some of which are negative, and I want to show how they add up to the total value. In my case, it is profit of various business units that I want to add up to total profit. The main way to show the ups and downs would be a waterfall chart, which are already more difficult than they need to be to make in Excel. However it want to show multiple months or quarters side by side. I ended up just drawing the chart manually because it was taking too long to figure out how to trick Excel.
You can still do that for real in Excel if you customize it a bit, but I understand what you mean, it should be easy and it's indeed a very useful type of graph.
In RStudio, type boxplot (Petal.Length ~ Species, data = iris, horizontal = T). This should give you a good starting point.
Pretty sure you can do this in minitab, will have to check when I get to the office on Monday
you can do absolute values if you have negatives and still need totals. you get LOTS of fields but works
I have seen these types of Charts been used in electricity generation. My Home Assistant has this function and uses it to display the energy I got from the grid, from my solar generation and what did go back into the grid from my solar. Also many studies use it to show what type of generation is cheaper (Solar), for example Frauenhofer ISE uses them.
Grapher by golden software allows for this with the floating bar chart. I use it to make stratigraphic plots for geology.
The percentile grade distribution is a rather bad example, because it is literally just a box plot turned into bars. Not only can you easily make box plot in those programs I even teach my 8th and 9th graders how to make them and read them.
I never realized South America was both north & south of Australia (3:00). I thought Australia & New Zealand were further south. Guess the chart's useful.
I think you can do this with math plot lib in Python but not a 100% sure
That's why I usually program this sort of things in Python, with matplotlib . It's so discrete that the numbers area easily feed into the program and the matplotlib library does the rest. I almost never use spreadsheets.
Thank you
I wrote a program ~30 years ago (that I am still working on) for the company I work for, a financial service firm that caters to institutional investors. The program is a tool for analyzing investment performance. I would guess that 85% of the charts made in the program are floating bar charts.
You can make a floating bar in a spreadsheet program by adding a spacer at the bottom and making it invisible. However it is not a straight path from concept to chart, as it should be...
and yes, we have called it a Floating Bar Chart for over 40 years.
It has been a second. But I believe Power BI and Tableau actually have this chart. These are statistical visualization programs and therefore can both do static and dynamic charts.
You have my support
Agree it is not directly available in, say, Excel - and it should be - but it can be created without "photoshopping" the axis … as I just made it in Excel in about 5 minutes. It does require "helper / blank" rows to be created.
It may not look as pretty, but you can get the same information from a box plot.
I’m literally trying to do this exact thing right now in Tableau and I want to chuck my computer out a window
isn't this really easy to do in matplotlib
I like the part where he said, "It's plotting time," and plotted all over the place.
violin charts for the win!
I've never had to use this chart ever and probably never will, but now I'm mad it isn't in Excel
I think you need a scatter pie plot chart with each point in the scatter plot being a pie chart. Additionally these could be animated which would allow for a third axis (perhaps representing time) so that we can visualize the change of our "scatterpies"
In seriousness - this looks like a fun chart to build as an extension for PowerBI or Looker Studio - I'm guessing Google Sheets could have one but idk about Excel - that place is not fun to do development in...
Libre office devs taking notes for their next update
Box plot does essentially the same, except using quartiles and extreme values of a data set.
I love this video :)
I manage the data visualization system for a data platform for a certain space faring government agency, and our system does support these charts!!
But you might not know it from looking at it as the bar charts will not only accept single values but also ranges. Given the software our system is built in is open sourced I wonder how many other systems already just support ranges.
A boxplot or violin plot are very good versions of this when you have actual data and not summary statistics. Im not sure in real life when you'd encounter the scenarios of summary statistics but no data
Tableau did this years ago.
Or see many resources even for Excel. e.g. Jon Peltiers multiple methods for managing this easily in every version of Excel from '95 onwards.
It's just a matter of laying out your data correctly.
That's just a box plot with multiple "medians" and no whiskers
Also bar plots with error bars are often very difficult to make and it is a shame, cause people should be using them much more.
Wooh Minneapolis mentioned
Honestly, the reason most software doesn't have this chart is it's the most unintuitive chart to read.
2:04 instead of adding an arbitrary number you could instead convert all temperature values to kelvin. Then you would have the same scale but never have negative numbers.
I think this type of chart is one of many that show that charting programs like excel really are insufficient for many charting activities and people should learn more advanced charting software. Matplotlib, ggplot, and HighCharts have been mentioned in comments. I think of it like the difference between using excel vs having an actual database you can get by with excel to a point but eventually everything you try to do with excel will be done better and easier with an actual database.
Box and whisker plot + Matlab goated
Love plot recipes in programming languages (when done right)
Hope they add this. 🤞
I was doing this exact thing, not Londons, different cities, last week, and ran into the same problem. Ended up trying a box plot but it was unsatisfying. I gave up and ended up playing guitar instead. Good trade off
Definetly missing is a proper Histograms, where some groups can be combined because separely the are small, so are combined, but now this total is unfairly represented because it is a wider group. In this we want vertical height considers the width of a bar => area=freq=width x height. So we plot a group showing its width, and the freq. Dens. = freq / group width...
FX stats managed this, but not excel/gopgle sheets/apple number now this is worrysome Geogebra and Desmos.
Coloring is one of the challenges with this chart.
this is similar to the football field chart investment bankers pride themselves in creating
I've got minions for that kind of stuff. Good to have seniority.
And what do they use?
Hmm, might be a good idea to ask IT to allow python pandas as part of the data analysis process.
Omg yes - I've literally done stupid formulas with extra series of the same colour to make a chart like this work, which of course then breaks in certain circumstances
My next matlab contribution on file exchange!
Hopefully this gets traction and becomes possible in graphing/charting programs
I was waiting for a Latex or R (programming language) ending to show how to do this. I guess Henry doesn't use those in his day-to-day
This would probably make it easier to create Gantt charts too. Realised you couldn't make those in excel without workarounds
I have had to hack together charts like that SO MANY TIMES
You can get around the negative number problem by splitting the one that crosses the 0 axis into two entries - one for the negative component and one for the positive component - and just setting them to exactly the same color. It's annoying, but it should at the very least create the visual you're going for?
As for starting above 0, you'd have to make filler sections that span each tick line that match the background color? That one's definitely harder
If you don't mind writing JSON, Vega lite supports that!
Weird, I wonder if any Older software has had this functionality. Seams to me like it would have been inexcusable when creating a name for that kinda software, but easily overlooked once a userbase in established
Minutephysics cats have infiltrated spreadsheets
me over here making my charts in adobe illustrator: 👩🎨