使用ggplot从科学记数法转换为十进制

Posted

技术标签:

【中文标题】使用ggplot从科学记数法转换为十进制【英文标题】:Convert to from scientific notation to decimal with ggplot 【发布时间】:2012-06-29 22:44:13 【问题描述】:

我正在尝试使用ggplot 使用以下命令绘制一些测试数据(显示在本文末尾):

options(scipen=20)    
ggplot(testData,aes(x=Group.1, y=x), format(scientific=FALSE)) + 
scale_x_discrete(name="Test", formatter=comma) + geom_bar()

绘图生成得很好,但 x 轴是科学计数法(如测试数据中),我将如何以十进制显示它? (如命令所示,我已经尝试了 scipen 选项和各种格式化程序选项 - 正如本网站其他帖子中所建议的那样)

我的测试数据:

> str(testData)
'data.frame':   5 obs. of  2 variables:
$ Group.1: Factor w/ 5 levels "(1.3e+03,1.5e+03]",..: 1 2 3 4 5
$ x      : num  80000 94000 86000 112000 98000

> testData
            Group.1      x
1 (1.3e+03,1.5e+03]  80000
2 (1.5e+03,1.7e+03]  94000
3 (1.7e+03,1.9e+03]  86000
4 (1.9e+03,2.1e+03] 112000
5 (2.1e+03,2.3e+03]  98000

> dput(testData)
structure(list(Group.1 = structure(1:5, .Label = c("(1.3e+03,1.5e+03]", 
"(1.5e+03,1.7e+03]", "(1.7e+03,1.9e+03]", "(1.9e+03,2.1e+03]", 
"(2.1e+03,2.3e+03]"), class = "factor"), x = c(80000, 94000, 
86000, 112000, 98000)), .Names = c("Group.1", "x"), row.names = c(NA, 
-5L), class = "data.frame")

testData的生成:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)),
                      by=list(cut(as.numeric(as.character(housing7$SIZE)), 
                      breaks=5)), FUN=mean)

【问题讨论】:

dput(testData) 发布您的testData 至此完成,不知道该命令 - 谢谢! 另外,你是如何创造这个因素的(testData$Group.1)?你是用cut还是什么的? 是的,cut() 和 aggregate() - 刚刚添加到帖子中 【参考方案1】:

一旦您的因子标签以科学记数法存储,就不容易恢复到正常记数法。

由于您使用cut 创建此因子,您可以使用dig.lab 参数更改标签中使用的位数。例如:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)),
by=list(cut(as.numeric(as.character(housing7$SIZE)), breaks=5,dig.lab=6)), FUN=mean)

【讨论】:

啊哈!挖掘正是我想要的!谢谢!顺便说一句,有什么方法可以让我的伤口干净吗? (如整数切分) 请注意,该代码中存在括号错误,请检查更新版本。 查看?cut。它提供了一堆选项。尝试指定您想要的休息时间,而不是像 breaks=c(100,200) 那样只指定 breaks=5

以上是关于使用ggplot从科学记数法转换为十进制的主要内容,如果未能解决你的问题,请参考以下文章

在python中将数组的元素从科学计数法转换为十进制计数法

如何将科学记数法转换为十进制记数法?

Excel 2010 将单元格内容中的科学记数法方程转换为十进制表示

将科学计数法中的十进制数转换为 IEEE 754

将科学记数法转换为十进制记数法

将具有科学计数法的字符串列表转换为十进制数