Julia中Gadfly直方图自定义X轴刻度数量的方法
在Gadfly中自定义X轴刻度的实现方法
问题背景
假设你有一个DataFrame,其中包含名为c_lab的列,取值范围为0到100,符合对数正态分布。使用Julia的Gadfly包执行以下代码绘制直方图:
plot(df_plot, x = "c_lab", Geom.histogram(bincount = 100), Guide.title("税前劳动收入 = h x w"), Guide.xlabel("总劳动收入"), Guide.ylabel("频数"), Theme(background_color = "white"))
生成的图表X轴仅显示3个刻度值,你希望将X轴刻度数量调整为10个(如10、20…100)或4个(如25、50…100),类似R的ggplot2中+scale_x_continuous(n.breaks = 10)的效果,以下是Gadfly中的实现方案:
1. 手动指定精确刻度值
如果明确知道需要的刻度区间,直接通过Scale.x_continuous的ticks参数传入刻度数组即可:
示例1:设置10个刻度(10到100,步长10)
plot(df_plot, x = "c_lab", Geom.histogram(bincount = 100), Guide.title("税前劳动收入 = h x w"), Guide.xlabel("总劳动收入"), Guide.ylabel("频数"), Scale.x_continuous(ticks = 10:10:100), Theme(background_color = "white"))
示例2:设置4个刻度(25到100,步长25)
plot(df_plot, x = "c_lab", Geom.histogram(bincount = 100), Guide.title("税前劳动收入 = h x w"), Guide.xlabel("总劳动收入"), Guide.ylabel("频数"), Scale.x_continuous(ticks = 25:25:100), Theme(background_color = "white"))
2. 自动生成指定数量的刻度
如果不需要精确指定刻度值,仅要求大致数量,可以使用LinearTicks(n)函数自动生成n个均匀分布的刻度,需要先导入Gadfly.Scales模块:
using Gadfly.Scales plot(df_plot, x = "c_lab", Geom.histogram(bincount = 100), Guide.title("税前劳动收入 = h x w"), Guide.xlabel("总劳动收入"), Guide.ylabel("频数"), Scale.x_continuous(ticks = LinearTicks(10)), # 生成约10个均匀刻度 Theme(background_color = "white"))
注:LinearTicks(n)会根据数据范围自动计算刻度,最终数量可能和指定的n略有偏差,但能保证分布均匀。
内容的提问来源于stack exchange,提问作者Jorge Paredes
相关产品推荐
相关产品推荐

