Comments (7)
Hi there, thanks for the report! To be clear, both axes have left-aligned text, it is just that there is additional space on the bottom axes due to misalignment with the top axis.
The issue occurs because the two guides are drawn independently of oneanother, unaware of dimensions of other axes in the same direction. Having dabbled a bit in the guide code, I can say with some confidence that it'll not be straightforward to line up the labels.
from ggplot2.
@smouksassi I think the intent is to change the 'whitespace' area for the lower series of axis labels from left to right w.r.t the labels. That'd left-align all the y-axis labels. Like the following picture that I have expertly edited using MS paint:
@ujtwr please correct me if I'm misinterpreting the request
from ggplot2.
For example, when moving the label of a panel to the left side, I would like the Y-axis text to align along the panel.
tibble(
F = c(rep("F1", 3), rep("F2", 3)),
Y = c("AAAAAAAAAAAAAAAAAAA", "BBBBB", "CCCCCCCCC", "DDDDD", "EEEEEEEE", "FFF"),
Cnt = c(10, 20, 30, 50, 40 ,60)
) %>%
ggplot(mapping = aes(y = Y, x = Cnt)) +
geom_col() +
facet_grid(
rows = vars(F),
scales = "free_y",
switch = "y"
) +
theme(
axis.text.y = element_text(hjust = 0),
strip.text.y.left = element_text(angle = 0),
strip.placement = "outside"
)
from ggplot2.
Thanks, the intent is clear π It is implementation-wise that this could be tricky.
from ggplot2.
in your case patchwork can help you doing what you want
library(patchwork)
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dataggplot <- tibble(
F = c(rep("F1", 3), rep("F2", 3)),
Y = c("AAAAAAAAAAAAAAAAAAA", "BBBBB", "CCCCCCCCC", "DDDDD", "EEEEEEEE", "FFF"),
Cnt = c(10, 20, 30, 50, 40 ,60)
)
a1 <- ggplot(dataggplot %>%
filter(F=="F1"),
mapping = aes(y = Y, x = Cnt)) +
geom_col() +
facet_grid(
rows = vars(F),
scales = "free_y",
switch = "y"
) +
theme(
axis.text.y = element_text(hjust = 0),
strip.text.y.left = element_text(angle = 0),
strip.placement = "outside"
)+
coord_cartesian(xlim=c(NA,60))+
theme(axis.title.x = element_blank(),axis.ticks.x.bottom = element_blank(),
axis.text.x.bottom = element_blank())
a2 <- ggplot(dataggplot %>%
filter(F=="F2"),
mapping = aes(y = Y, x = Cnt)) +
geom_col() +
facet_grid(
rows = vars(F),
scales = "free_y",
switch = "y"
) +
theme(
axis.text.y = element_text(hjust = 0),
strip.text.y.left = element_text(angle = 0),
strip.placement = "outside"
)+
coord_cartesian(xlim=c(NA,60))
a1/a2 +
plot_layout(axis_titles = "collect_y")
Created on 2024-04-04 with reprex v2.1.0
from ggplot2.
a quick fix would be to manually pad with spaces until you have a simiar strwidth
this is not a solution but prevent you form needing to manually edit your plot
library(stringr)
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dataggplot <- tibble(
F = c(rep("F1", 3), rep("F2", 3)),
Y = c("AAAAAAAAAAAAAAAAAAA", "BBBBB", "CCCCCCCCC", "DDDDD", "EEEEEEEE",
"FFF "),
Cnt = c(10, 20, 30, 50, 40 ,60)
) %>%
mutate(Ypad= stringr::str_pad(Y, width = 20, side = "right",pad=" ",use_width=FALSE))
strwidth(dataggplot$Y)
#> Error in strwidth(dataggplot$Y): plot.new has not been called yet
ggplot(dataggplot,
mapping = aes(y = Y, x = Cnt)) +
geom_col() +
facet_grid(
rows = vars(F),
scales = "free_y",
switch = "y"
) +
theme(text = element_text(size=16),
axis.text.y = element_text(hjust = 0),
strip.text.y.left = element_text(angle = 0),
strip.placement = "outside"
)
Created on 2024-04-04 with reprex v2.1.0
from ggplot2.
@smouksassi
Thank you for the suggestion. I have already tried it, but I'm a Japanese user, so sometimes there can be misalignment when padding with white spaces.
from ggplot2.
Related Issues (20)
- partial match (vp$just --> 'justification') HOT 2
- Could colour bar guide ticks be more readable? HOT 3
- Release ggplot2 3.5.1
- custom guide with `theme_void()` will throw a warning message HOT 1
- VSCode and ggplot (randomly) throw error "Error in UseMethod("depth")". HOT 7
- Feature request: flexible parametrisation of rectangles
- AsIs sometimes not preserved when computing geom parameters HOT 4
- Cryptic error when mis-specifying linetype HOT 6
- Version 3.5.0 or 3.5.1 cannot render a plot made with 3.4.4 HOT 2
- Standardising calls to `gpar()`
- Fill and color guides for factor with `drop=FALSE` don't show color. HOT 7
- `guide_coloursteps(show.limits = T)` produces strange lower limit HOT 1
- Warnings due to partial matching HOT 2
- Reproducible example for `position_jitter()` not working HOT 1
- geom_sf_label() returns an error HOT 3
- date_breaks and date_breaks minor don't check argument type HOT 2
- `scale_*_*` `labels` argument often doesn't work as expected with a function HOT 8
- geom_histogram produces wrong number of bins in special cases HOT 2
- x/ylim Arguments in coord_fixed Donβt Seem to Be Applied to Contours: HOT 1
- Feature request: allow adding aesthetics together HOT 2
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.