作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
多年来,这个问题在 StackOverflow 上被多次提出(参见 here 和 here),但是我还没有遇到一种我满意的方法,可以轻松地将未标记的小刻度添加到我的 ggplot轴。
让我们生成一些虚拟数据来处理:
df <- data.frame(x = rnorm(1000, mean = 25, sd = 5),
y = rnorm(1000, mean = 23, sd = 3))
我遇到过两种添加未标记小刻度的方法。
""
定义的空格连接您希望出现在主要刻度上的值.如果您只想在主要刻度值之间添加一个未标记的小刻度,您可以像这样构造轴标签的向量:
axis_values <- c(0, "", 10, "", 20, "", 30, "", 40, "", 50)
或者,如果您想要 n 个未标记的小刻度:
# Where n = 2 and for an axis range [0, 50]
axis_values <- c(0, rep("", 2), 15, rep("", 2), 30, rep("", 2), 45, "")
然后,用户可以将此向量提供给 ggplot2::scale_x_continuous 或 ggplot2::scale_y_continuous 函数中的“labels”参数,只要标签向量的长度与提供给“breaks”参数的向量长度相匹配相同的功能。
ggplot(df, aes(x = x, y = y)) +
geom_point() +
scale_x_continuous(breaks = seq(0, 50, 5), labels = axis_values, limits = c(0, 50)) +
scale_y_continuous(breaks = seq(0, 50, 5), labels = axis_values, limits = c(0, 50))
方法 2 - 定义自己的函数来生成轴标签向量
insert_minor <- function(major_labs, n_minor) {
labs <- c( sapply( major_labs, function(x) c(x, rep("", n_minor) ) ) )
labs[1:(length(labs)-n_minor)]
}
# Generate plot
ggplot(df, aes(x = x, y = y)) +
geom_point() +
scale_x_continuous(breaks = seq(0, 50, 5), labels = insert_minor(major_labs = seq(0, 50, 10),
n_minor = 1), limits = c(0, 50)) +
scale_y_continuous(breaks = seq(0, 50, 5), labels = insert_minor(major_labs = seq(0, 50, 10),
n_minor = 1), limits = c(0, 50))
方法 2 是我见过的生成未标记小刻度的最佳方法。但是缺点是:
最佳答案
一种快速、简单且有点时尚的解决方案是定义这种单行标签功能,该功能仅显示在您选择的倍数处发生的中断:
label_at <- function(n) function(x) ifelse(x %% n == 0, x, "")
所以你可以这样做:
ggplot(df, aes(x = x, y = y)) +
geom_point() +
scale_x_continuous(breaks = seq(0, 50, 5), labels = label_at(10),
limits = c(0, 50)) +
scale_y_continuous(breaks = seq(0, 50, 5), labels = label_at(5),
limits = c(0, 50))
ggplot(df, aes(x = x, y = y)) +
geom_point() +
scale_x_continuous(breaks = 1:50, labels = label_at(10), limits = c(0, 50)) +
scale_y_continuous(breaks = 1:50, labels = label_at(10), limits = c(0, 50))
关于r - 在 ggplot2 中添加小刻度的快速、时尚和简单的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64174750/
import io import torch import torch.nn as nn from torchvision import models from PIL import Image im
我正在使用时尚 MNIST 数据集来尝试解决这个问题。我正在使用链接中的数据: 培训: http://fashion-mnist.s3-website.eu-central-1.amazonaws.c
我正在使用 Firefox 插件 Stylish 为 Facebook 创建自定义样式。我试图让顶部的蓝色条变平,但我做不到。我使用 CSS 代码: #blueBar { background-
我是一名优秀的程序员,十分优秀!