楼主: 落叶无雨
29660 6

[问答] R语言绘图(plot/ggplot2) 如何设置坐标轴标签小数位数? [推广有奖]

教授

3%

还不是VIP/贵宾

-

威望
0
论坛币
15 个
通用积分
118.0838
学术水平
72 点
热心指数
85 点
信用等级
63 点
经验
7505 点
帖子
423
精华
1
在线时间
1531 小时
注册时间
2011-10-22
最后登录
2024-11-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题:R语言绘图(plot/ggplot2) 如何设置坐标轴标签小数位数?



谢谢帮助!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot 坐标轴 GPL 坐标轴 标签 如何

沙发
johnmy 发表于 2017-1-3 20:07:36 |只看作者 |坛友微信交流群
Google了一下,试了下可以。
http://stackoverflow.com/questions/38369855/how-to-put-exact-number-of-decimal-places-on-label-ggplot-bar-chart

How can I specify the exact number of decimal places on ggplot bar chart labels?

The data:

strefa  <- c(1:13)
a       <- c(3.453782,3.295082,3.137755,3.333333,3.500000,3.351351,3.458824,3.318681,3.694175,3.241379,3.138298,3.309524,3.380000)
srednie <- data.frame(strefa,a)
The code is:

ggplot(srednie, aes(x=factor(strefa), y=a, label=round(a, digits = 2))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")
As you can see, on bars entitled 5 and 2 the labels are limited to the 1st decimal place. How to show 2 decimal places even if there is i.e. 3.000000 or 5.999999? In such a cases I would like to show 3.00 and 6.00.

I tried to use as a aes parameter label=round(a, digits = 2) but it doesn't work.

r ggplot2 bar-chart
shareimprove this question
edited Jul 14 '16 at 12:04




You could try the following as it rounds to two digits and prints two digits after the decimal.

ggplot(srednie, aes(x=factor(strefa), y=a, label=sprintf("%0.2f", round(a, digits = 2)))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")
The only modification was changing your code from

round(a, digits = 2)
to

sprintf("%0.2f", round(a, digits = 2))
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
admin_kefu + 30 + 2 + 5 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 5   查看全部评分

使用道具

藤椅
johnmy 发表于 2017-1-3 20:20:42 |只看作者 |坛友微信交流群
https://www.google.com/#safe=strict&q=ggplot+digits

使用道具

+scale_x_continous(limits=c(min(x),max(x)),breaks=round(seq(min(x),max(x),length.out=10),4))
标10个刻度,保留四位小数,想改的话,把10和4按自己要求改成别的数还可以scale_y_continous,scale_color_continous,你懂的
已有 1 人评分论坛币 热心指数 收起 理由
admin_kefu + 20 + 5 热心帮助其他会员

总评分: 论坛币 + 20  热心指数 + 5   查看全部评分

使用道具

报纸
落叶无雨 学生认证  发表于 2017-1-4 11:49:49 |只看作者 |坛友微信交流群
johnmy 发表于 2017-1-3 20:20
https://www.google.com/#safe=strict&q=ggplot+digits
谢谢你的帮助!

使用道具

地板
落叶无雨 学生认证  发表于 2017-1-4 11:50:05 |只看作者 |坛友微信交流群
机械唯物主义123 发表于 2017-1-3 23:20
+scale_x_continous(limits=c(min(x),max(x)),breaks=round(seq(min(x),max(x),length.out=10),4))
标10个 ...
非常感谢!

使用道具

7
poebeshanshan 发表于 2023-7-28 13:49:52 来自手机 |只看作者 |坛友微信交流群
同请教

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-29 05:45