R中标记对数刻度显示
在 R 中绘制直方图、散点图和其他轴缩放为对数刻度的图时,如何使用 10^-1 10^0 10^1 10^2 10^3 等标签而不是显示的轴只是 -1, 0, 1, 2, 3 等。 应该向 hist()、plot() 等命令添加哪些参数?
While plotting histogarm, scatterplots and other plots with axes scaled to logarithmic scale in R, how is it possible to use labels such as 10^-1 10^0 10^1 10^2 10^3 and so on instead of the axes showing just -1, 0, 1, 2, 3 etc. What parameters should be added to the commands such as hist(), plot() etc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
除了ggplot2的解决方案(参见gsk3的评论)之外,我想补充一点,当使用正确的参数时,这也会在plot()中自动发生,例如:
您可以使用参数
log="x" 表示 X 轴,或
log="xy"
表示两者。如果您想格式化数字,或者您有日志格式的数据,您可以使用 axis() 进行解决。一些有趣的函数:
axTicks(x)
为您提供 X 轴 (x=1) 或 Y 轴 (x=2) 上刻度的位置bquote()
将表达式转换为语言,但可以用变量的值替换变量。有关问题中的bquote()
的更多信息 R 中绘图标签中的乳胶和变量? .as.expression()
使来自bquote()
的语言对象成为一个表达式。这允许axis()
进行格式化,如?plotmath
中所述。它无法对语言对象执行此操作。良好格式设置的示例:
"https://i.sstatic.net/chb6E.png" alt="在此处输入图像描述">
Apart from the solution of ggplot2 (see gsk3's comment), I would like to add that this happens automatically in plot() as well when using the correct arguments, eg :
You can use the parameter
log="x"
for the X axis, orlog="xy"
for both.If you want to format the numbers, or you have the data in log format, you can do a workaround using axis(). Some interesting functions :
axTicks(x)
gives you the location of the ticks on the X-axis (x=1) or Y-axis (x=2)bquote()
converts expressions to language, but can replace a variable with its value. More information onbquote()
in the question Latex and variables in plot label in R? .as.expression()
makes the language object coming frombquote()
an expression. This allowsaxis()
to do the formatting as explained in?plotmath
. It can't do so with language objects.An example for nice formatting :
Which gives
以下是绘制此类轴的不同方法:
编辑:这也在
latticeExtra
中通过scale.components
Here is a different way to draw this type of axis:
EDIT: This is also solved in
latticeExtra
withscale.components
在 ggplot2 中,您只需添加一个
来缩放轴,为它们添加标签并添加自定义中断。
In ggplot2 you just can add a
to scale your axis, Label them and add custom breaks.