Comments (3)
Hi thanks for the suggestions!
Yes, using areas for histograms satisfies the proportional ink principle, but below are a few reasons I don't think we should do it.
- Users have come to expect counts by default. We have parted with defaults before, but I don't think we should depart a very clear and simple metric (counts) in favour of more complicated metrics.
- Counts and the proposed metric are only the same when the width of the bars are 1. If you replace the breaks by
binwidth = 0.01
, you see several values reach 200 with the proposed metric, whereas the data only has 32 observations in total. after_stat(sum(count) * density)
sums the counts over groups, which it shouldn't asdensity
is calculated within groups. The appropriate metric would beafter_stat(count / width)
. As this is available as a simple combination of already available computed variables, I don't think this merits a novel computed variable.
from ggplot2.
Yes, changing a default is a pain... IMO it's worth it, but I don't have a huge community to serve ;)
At the very least, I think this should be written somewhere in the docs (as this is how histograms are commonly defined*). Additionally, an example with after_stat(count / width)
can be added, with or without (or both) non-equi-width bins.
I'm willing to make (the world's smallest) PR if you'd like.
If you replace the breaks by
binwidth = 0.01
, you see several values reach 200 with the proposed metric, whereas the data only has 32 observations in total.
I don't see this as an issue - in PDFs, densities can also exceed 1 - it's just stats being stats 🤷♂️
* I only came to notice this when I was teaching histograms and a student pointed out that my plot didn't match what I had just said.
from ggplot2.
it's just stats being stats
Agreed, but it was meant to illustrate how it departed from counts even for equi-bins 🤓
Adding an example is a good idea, we'd welcome a PR for this.
from ggplot2.
Related Issues (20)
- Default label is ignored when a mapping is overwritten by a parameter HOT 1
- scale_color_stepsn() will not accept expression vector for scale labels HOT 3
- Should `alpha` in geoms that have polygons and points only affect the interior of polygons? HOT 4
- Regressions related to #5879 HOT 2
- Regression related to #5807
- suppress "Each group consists of only one observation" HOT 5
- Hebrew and digits don't render ("Failed to get emoji face") HOT 7
- Arrangement of multiple legends inside legend box HOT 3
- Change in scale_color_manual behavior in 3.5.x, adds NA to legend HOT 4
- guide_axis_logticks() does not coordinate with minor axis breaks? HOT 4
- wrong detection of outlier with ggplot HOT 1
- Do not remove levels only containing NA data if na.rm is set to FALSE HOT 1
- Feature request: alternate `expand` parameter HOT 1
- Naming of internal helper functions
- geom_smooth: Prediction interval and not confidence interval for se in the documentation HOT 4
- Add feature to give legend items row/column locations to appear. HOT 4
- `geom_tile()` not square when saving high res map (may be a more fundamental R graphics issue) HOT 3
- `geom_text()` justification docs are wrong HOT 1
- Error: Invalid index: field name 'x_start' not found HOT 5
- `scale_x_steps2()` throws an error when labels and breaks are manually specified HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ggplot2.