在Julia中如何用Plots实现类似Pandas df.plot()的数据框绘图
Julia中使用Plots+DataFrames实现类似Pandas
df.plot()的方案 完全可以实现对应效果,你只需要额外安装Plots生态的官方数据绘图扩展包StatsPlots即可,和你当前使用的Plots库、plotlyjs后端、DataFrames包完全兼容。
前置配置
- 安装StatsPlots包:
import Pkg; Pkg.add("StatsPlots")
- 导入依赖并指定后端:
using DataFrames, Plots, StatsPlots plotlyjs() # 启用你指定的plotlyjs后端
核心用法
StatsPlots提供的@df宏就是专门用来直接对DataFrame绘图的工具,语法和Pandas的df.plot非常接近:你只需要在绘图命令前加@df 数据框名,后续直接用加了冒号的列名(Symbol类型)指代对应列的数据即可,所有Plots原生支持的参数都可以直接复用。
常见场景示例
首先构造测试用数据框:
df = DataFrame( 序号 = 1:30, 产品A销量 = rand(50:150, 30), 产品B销量 = rand(30:120, 30), 到店人数 = rand(200:500, 30) )
- 绘制多序列折线图(对应Pandas
df.plot(x="序号", y=["产品A销量","产品B销量"]))
@df df plot(:序号, [:产品A销量, :产品B销量], title="产品销量趋势", xlabel="日期序号", ylabel="销量", label=["产品A" "产品B"], linewidth=2)
- 绘制单序列柱状图
@df df bar(:序号, :产品A销量, color=:lightblue, label="产品A日销量", xrotation=45)
- 绘制散点图查看变量相关性
@df df scatter(:到店人数, :产品A销量, markersize=4, color=:red, alpha=0.6, xlabel="到店人数", ylabel="产品A销量", label="样本点")
- 快速绘制所有数值列的分布直方图(对应Pandas
df.hist())
@df df histogram(cols(2:4), layout=(3,1), fillalpha=0.7, label="", title=["产品A销量分布" "产品B销量分布" "到店人数分布"])
小提示:如果需要选择多列绘图,直接把列名放在方括号里即可;如果是用变量存储的列名,用
cols(列名变量)包裹即可正常识别。
内容的提问来源于stack exchange,提问作者Joris Limonier
相关产品推荐
相关产品推荐

