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

Wolfram Mathematica中ListDensityPlot缺失边缘点的解决方法问询

如何让Mathematica的ListDensityPlot显示所有网格点(包括边缘)?

问题核心是ListDensityPlot默认的坐标映射逻辑会忽略边缘点对应的色块,而MatrixPlot会为每个矩阵元素生成完整单元格。解决方法是通过DataRange参数明确指定坐标范围,让每个网格点都对应一个独立的彩色方块。

修改后的代码示例

nx = 20;
ny = 20;

Table[
  u[[i]][[j]] = Exp[-(i - nx/2)^2 - (j - ny/2)^2]
  , {i, 2, nx - 1}, {j, 2, ny - 1}];

Table[u[[i]][[1]] = 1; u[[i]][[ny]] = 1;, {i, nx}];
Table[u[[1]][[j]] = 1; u[[nx]][[j]] = 1;, {j, ny}];

(* 关键是添加DataRange参数,让每个网格点对应完整色块 *)
ListDensityPlot[u, InterpolationOrder -> 0, DataRange -> {{0, nx}, {0, ny}}]
MatrixPlot[u]

原理说明

  • MatrixPlot默认将矩阵第i行第j列的元素映射到x∈[i-1, i]、y∈[j-1, j]的矩形区域,因此每个元素都有对应的色块。
  • ListDensityPlot默认的坐标范围是{{1, nx}, {1, ny}},色块仅生成在相邻坐标点之间,导致边缘的第1行/列、第nx/ny行/列元素没有对应的完整色块。
  • 设置DataRange -> {{0, nx}, {0, ny}}后,会让每个矩阵元素对应从i-1到i的x区间、j-1到j的y区间,从而让所有20×20的网格点都生成对应的彩色方块,与MatrixPlot效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:42:02