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

Julia中像素网格点绘制:如何将连续线转为离散像素点展示

实现像素点式线段绘制的两种方法

方法一:修改现有绘图调用,仅显示标记点

你的代码里plot函数默认会将点连接成线,只需设置linestyle=:none就能只显示离散的像素点,或者直接使用scatter函数(专门用于绘制散点):

修改后的代码

using Plots
function plotline(x1,y1,x2,y2)
    a=(x2-x1)/(y2-y1)
    c=(x2*y1-x1*y2)/(y2-y1)
    y=collect(y1:y2)
    x=round.(y.*a .- c)  # 合并运算,简化代码
    # 方法1:使用plot并关闭连线
    display(plot(x,y,label="plotline",shape=:circle, color=:red, linestyle=:none))
    # 方法2:直接用scatter函数
    # display(scatter(x,y,label="plotline",shape=:circle, color=:red))
end

plotline(1,1,4,13)

这样就能得到独立的圆形像素点,不会有连线干扰。

方法二:用热图模拟像素画布

如果要更贴近“像素块”的视觉效果(像位图那样的方格像素),可以用热图实现:

热图版代码

using Plots
function plotline_pixel(x1,y1,x2,y2)
    a=(x2-x1)/(y2-y1)
    c=(x2*y1-x1*y2)/(y2-y1)
    y=collect(y1:y2)
    x=round.(y.*a .- c)
    
    # 确定画布的边界范围
    min_x, max_x = minimum(x), maximum(x)
    min_y, max_y = minimum(y), maximum(y)
    
    # 初始化空白像素矩阵,行对应y轴,列对应x轴
    pixel_matrix = zeros(Int, Int(max_y - min_y + 1), Int(max_x - min_x + 1))
    
    # 标记计算出的像素位置
    for (xi, yi) in zip(x, y)
        # 转换为矩阵的索引(注意y轴翻转,因为矩阵行从上到下,图像y轴从下到上)
        row_idx = Int(yi - min_y + 1)
        col_idx = Int(xi - min_x + 1)
        pixel_matrix[row_idx, col_idx] = 1
    end
    
    # 绘制热图,设置颜色、坐标轴和翻转y轴
    display(heatmap(min_x:max_x, min_y:max_y, pixel_matrix, 
                    c=:reds, yflip=true, xlabel="X", ylabel="Y", label="线段像素点"))
end

plotline_pixel(1,1,4,13)

这个方法会生成类似像素网格的效果,每个选中的位置显示为红色方块,更贴近传统像素绘制的视觉体验。

内容的提问来源于stack exchange,提问作者I Like Algebra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:42:48