我需要 ggplot scale_x_log10() 给我负数和正数作为输出

2024-01-12

我在这里生成了一个包含正数和负数的精细直方图。

x <- rnorm(5000,0,1000)
library(ggplot2)
df <- data.frame(x)
ggplot(df, aes(x = x)) + geom_histogram()

我想要的是有一个记录的 x 轴。当我使用scale_x_log10()仅对正数执行此操作时,它就像一个魅力。但在这里它没有,它要么删除我的负数,要么将它们添加到正数中。

ggplot(df, aes(x = x)) + geom_histogram() + scale_x_log10()

我真正想要的是刻度线和刻度线之间的间距遵循对数模式,并且 x 轴上 0 的两侧彼此互为镜像,但我似乎无法做到这一点。


这可以通过定义一个新的转换(“签名日志”,sign(x)*log(abs(x)); the 阿辛转型 https://en.wikipedia.org/wiki/Inverse_hyperbolic_function#asinh建议来自R 中具有“负”对数刻度的直方图 https://stackoverflow.com/questions/14504869/histogram-with-negative-logarithmic-scale-in-r可能更有原则性,或者如上面评论中建议的带符号的平方根),但我怀疑这是否是一个好主意。尽管如此......(“授人以鱼,你可以喂他一辈子;给他一根绳子,他可以上吊自杀......”)......你可以通过以下方式定义你自己的轴变换:trans_new如下所示。

Setup:

library(ggplot2); theme_set(theme_bw())
set.seed(101)
df <- data.frame(x=rnorm(5000,0,1000))

设置新的转换:

weird <- scales::trans_new("signed_log",
       transform=function(x) sign(x)*log(abs(x)),
       inverse=function(x) sign(x)*exp(abs(x)))

尝试一下——首先是原始点:

ggplot(df,aes(x,x))+geom_point()+
    scale_y_continuous(trans=weird)

现在在直方图上:

ggplot(df, aes(x = x)) + geom_histogram()+
    scale_x_continuous(trans=weird)

您应该担心的事情:

  • 当你的值在 -1 到 1 之间时,这种转换将是无意义的
  • 您可能需要担心在没有适当缩放箱高度的情况下变换直方图的轴:它可能会给您带来概率密度的误导性印象 - 尽管在这种情况下ggplot(df, aes(x = weird$transform(x))) + geom_histogram()看起来和上面的情节差不多……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我需要 ggplot scale_x_log10() 给我负数和正数作为输出 的相关文章

  • 如何在 R 中合并同名列表中的数据框?

    我有一个包含很多数据框的列表 如果它们具有相同的名称 我想合并它们 即合并所有具有相同名称 a 和 b 的数据框 像这样 a lt aaaaa b lt bbbbb c lt ccccc g lt list df1 lt data fram
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • 使用 R 下载压缩数据文件、提取和导入数据

    EZGraphs 在 Twitter 上写道 很多在线 csv 都被压缩了 有没有办法下载 解压缩存档并使用 R 将数据加载到 data frame Rstats 我今天也尝试这样做 但最终只是手动下载 zip 文件 我尝试过类似的东西 f
  • Quantmod 的简单功能不再起作用

    我明天要交论文 我收到了一条关于 quantmod 的非常奇怪的错误消息 这是我在过去几周使用这个包时从未遇到过的 我无法导入特定于道琼斯指数 DJI 的数据 我收到以下错误消息 getSymbols DJI src yahoo from
  • R 闪亮仪表板中的动态重复条件面板

    我正在尝试创建一个动态条件面板 所以我的条件如下 在用户界面中输入 selectInput inpt Input Number seq 1 50 1 selectize FALSE 我的条件面板 UI 输入是 conditionalPane
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 绘制 Cox 回归的 Kaplan-Meier 图

    我使用 R 中的以下代码设置了一个 Cox 比例风险模型来预测死亡率 添加协变量 A B 和 C 只是为了避免混淆 即年龄 性别 种族 但我们真正对预测变量 X 感兴趣 X 是一个连续变量 cox model lt coxph Surv t
  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch
  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • `dplyr::_join` 函数的命名向量“by”参数[重复]

    这个问题在这里已经有答案了 我正在写一个函数dplyr join两个数据框by不同的列 第一个数据帧的列名称动态指定为函数参数 我相信我需要使用rlang准引用 元编程 但未能找到可行的解决方案 我很感激任何建议 library dplyr
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • 如何按定义的顺序将图像合并到一个文件中

    我有大约 100 张图像 png 我不想手动执行此操作 而是希望将它们按照定义的顺序 基于文件名 并排放置在一个 pdf 中 每行 12 个图像 有人有什么建议吗 我按照下面托马斯告诉我的方法尝试了 它把它们贴在旁边有一个黑边 我怎样才能去
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • R在Windows平台Rstudio上打印data.frames中的UTF-8代码

    当数据框中存在UTF 8字符时 将无法正常显示 例如 以下内容是正确的 gt U6731 1 朱 但是当我将其放入数据框中并打印出来时 它是 gt data frame x U6731 x 1
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 将向量(或弧)绘制到玫瑰图上。 MATLAB

    我有两个数据集 其中详细列出了angles 我正在绘制玫瑰图 angles 0 8481065519 0 0367932161 2 6273740453 n 另一个 从这组角度详细说明方向统计 angle error 0 848106563
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso

随机推荐

  • 从 ipython 导入

    如果我将 IDLE 与 python 2 7 一起使用 import cv import cv2 它有效 但如果我使用 ipython 笔记本 它给了我错误 ImportError Traceback 最近调用 最后 在 gt 1份导入简历
  • numPy 中的意外特征向量

    我见过this https stackoverflow com questions 13739186 compute eigenvector using a dominant eigenvalue问题 这与我尝试使用 numPy 计算 Py
  • 将新节点添加到链表的新方法

    void addNewNode struct node head int n struct node temp struct node malloc sizeof struct node temp gt data n temp gt lin
  • 单例bean和原型bean有什么区别?

    我是春天的新手 我读到了这篇文章 基本上 bean 具有定义其在应用程序中存在的范围 Singleton 意味着每个 Spring IOC 容器对单个对象实例的单个 bean 定义 原型 意味着任意数量的对象实例的单个 bean 定义 那么
  • Postman 上的授权类型 Bearer Token

    我正在尝试使用 Postman 测试一些端点 所有端点都需要一个可以通过登录获取的令牌 所以我这样做了 请求 1 登录成功后 我可以从响应中访问令牌 然后将该令牌存储在全局变量中 let token pm response json loc
  • 旧版应用程序上的 Windows GUI 自动化

    我正在尝试自动化一个名为的旧 Windows 应用程序FacTel5 http www movistar es empresas ayuda factel abierto empresas 我已经能够自动化登录部分 但下一个表单是一个类似项
  • 消息框错误:外部导入不安全

    import Graphics Win32 import System Win32 DLL import Control Exception bracket import Foreign import System Exit main IO
  • 修复 Docker 中的 World-writable MySql 错误

    我正在使用 docker compose 对于 db 我定义了这样的容器 db build builds mysql 5 7 environment MYSQL ROOT PASSWORD pass MYSQL DATABASE MYSQL
  • 带有 numpy 掩码数组的 Python 散点图

    我一直试图掩盖散点图的数据 所有数据似乎都在绘制 我正在使用 numpy 数组 如下面的代码片段所示 我想也许我无法屏蔽 c 数组 我似乎找不到任何执行此操作的文档 我将尝试使用 s 数组 任何帮助是极大的赞赏 yy NP ma array
  • 如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空 $_folder_$

    我有一个简单的glue etl 作业 它是由Glue 工作流程触发的 它从爬虫表中删除重复数据并将结果写回到 S3 存储桶中 工作顺利完成 然而 spark 的空文件夹会生成 folder 保留在 s3 中 它在层次结构中看起来不太好 并会
  • 检查字符串是否是标点符号

    假设我有一个包含一些字母和标点符号的字符串数组 String letter a b c a 在字母 3 中 我们有 如何检查字符串是否是标点符号 我们知道有很多可能的标点符号 等 到目前为止我的进展 for int a 0 a lt let
  • 当退出 C 应用程序时,分配的内存是否会自动释放?

    假设我有以下 C 代码 int main int p malloc 10 sizeof p p 42 return 0 Exiting without freeing the allocated memory 当我编译并执行该C程序时 即在
  • 如何更改Spyder中Python的路径?

    我正在使用Debian 我安装了Python 3 2 3 Python 3的路径是 usr bin python3 如何在 Spyder 中更改它 Press CTRL SHIFT ALT P打开首选项窗口 在此窗口中 选择Console左
  • Android SIP 堆栈 - 使用什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要在 Android 上创建使用 SIP 堆栈 它将与 asterix 一起使用 并使用户能够更改
  • 为什么 makefile 有时会将“true ”作为构建脚本的一部分?

    例如 Some stuff all some dependencies CC o foo o foo c true foo o some other operation true foo o 行有什么作用 通常这是 Makefile 生成器
  • MinGW GCC 4.9.1 和浮点确定性

    我编写了一个小程序来计算 3 坐标向量的欧几里得范数 这里是 include
  • Hadoop 在一个文件中搜索另一个文件中的单词

    我想构建一个 hadoop 应用程序 它可以从一个文件读取单词并在另一个文件中搜索 如果该单词存在 它必须写入一个输出文件 如果该单词不存在 它必须写入另一个输出文件 我在hadoop中尝试了一些例子 我有两个问题 两个文件每个大约 200
  • Matlab 中的并行处理

    我创建了两个函数 生成数据和处理数据 数据处理很耗时 所以我想在并行线程中处理它们 但我对他们有一些问题 首先 这是我的程序 result zeros 1 10 matlabpool open local 2 spmd for a 1 5
  • 使用 Windows 批处理命令循环直到文件存在

    如何将以下代码转换为 Windows 批处理命令 这是一个 perl 脚本 它在 while 循环中搜索文件 如果找到则退出 use strict use warnings my filename something txt while 1
  • 我需要 ggplot scale_x_log10() 给我负数和正数作为输出

    我在这里生成了一个包含正数和负数的精细直方图 x lt rnorm 5000 0 1000 library ggplot2 df lt data frame x ggplot df aes x x geom histogram 我想要的是有