Julia中GroupedDataFrame绘图X轴显示Trace0而非GroupKey的问题
问题:Julia中GroupedDataFrame绘制箱线图时X轴名称显示异常
在使用Julia的PlotlyJS结合GroupedDataFrame绘制箱线图时,希望将分组的公司名称作为X轴标签,但图表仅显示“Trace0”,尝试两种方式均无效:
- 直接将GroupKey赋值给
name参数 - 提取分组的唯一公司名称数组赋值给
name参数
原尝试代码:
using PlotlyJS, DataFrames, Tables gdf=groupby(subset_df, :company_name) trace_array = [] for key in keys(gdf) println(key) push!(trace_array, box(y=gdf[key].target_price, name=key)) end plot(trace_array[2])
第二种尝试代码:
company_name_str = unique(gdf[key].company_name) println(company_name_str) push!(trace_array, box(y=gdf[key].target_price, name=company_name_str))
解决思路与修正代码
问题根源:
keys(gdf)返回的是GroupKey类型对象,直接传给name参数时,Plotly无法将其解析为字符串标签unique(gdf[key].company_name)返回的是字符串数组(如["某公司"]),但name参数要求传入单个字符串值
修正后的代码:
方式1:直接从GroupKey提取字符串值
using PlotlyJS, DataFrames, Tables gdf = groupby(subset_df, :company_name) # 建议添加类型注解,避免类型不稳定 trace_array = AbstractTrace[] for key in keys(gdf) # 从GroupKey中直接提取具体的公司名字符串 company_name = key.company_name push!(trace_array, box(y=gdf[key].target_price, name=company_name)) end # 绘制所有轨迹或指定单条轨迹 plot(trace_array) # 绘制单条轨迹:plot(trace_array[2])
方式2:从分组数据中提取单个字符串(而非数组)
using PlotlyJS, DataFrames, Tables gdf = groupby(subset_df, :company_name) trace_array = AbstractTrace[] for key in keys(gdf) # 取唯一公司名称的第一个元素,确保是单个字符串 company_name_str = first(unique(gdf[key].company_name)) push!(trace_array, box(y=gdf[key].target_price, name=company_name_str)) end plot(trace_array)
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

