You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia 1.7.3中Plots.plot绘折线图出现异常对角线,是否为Bug?

问题分析与解决

你遇到的橙色异常线不是Bug,是代码逻辑问题——outerjoin之后的wealth列没有按数值排序,折线图默认按数据行的顺序连接点,当x轴(wealth)数值乱序时,就会在首尾或不连续的点之间产生跨图的连线。

问题根源

你的两个原始数据集Em_dat和Unem_dat的wealth列可能包含不同的数值范围或非重叠值,outerjoin会合并所有wealth值,但不会自动按数值排序。当直接用这个乱序的x轴数据画折线图时,Plots会严格按照行的顺序把点连起来,最终出现那条奇怪的对角线。

修正代码

在将DataFrame转为矩阵之前,新增排序步骤即可解决:

Em_mu = [a_grid.+Es[1] res.mu[:,1]]
Unem_mu = [a_grid.+Es[2] res.mu[:,2]]
Em_dat = DataFrame(wealth = Em_mu[:,1], density1 = Em_mu[:,2])
Unem_dat = DataFrame(wealth = Unem_mu[:,1], density2 = Unem_mu[:,2])
wealth_mat = outerjoin(Em_dat, Unem_dat, on=:wealth)
replace!(wealth_mat.density1, missing => 0)
replace!(wealth_mat.density2, missing => 0)
disallowmissing!(wealth_mat)

# 按wealth列从小到大排序,确保x轴数据有序
sort!(wealth_mat, :wealth)

wealth_mat = Matrix(wealth_mat)

Plots.plot(wealth_mat[:,1], wealth_mat[:,2:3], title = "Distribution")

补充说明

如果原始a_grid本身是有序的,Es[1]和Es[2]的差异可能导致两个wealth序列的范围不重叠,outerjoin合并后就会打乱顺序。排序后x轴数据按递增排列,折线图会正常按x轴顺序绘制,不会再出现跨图连线。

内容的提问来源于stack exchange,提问作者Young

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:26:52