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

Python绘制等离子体效果失败求助:代码运行结果不符预期

等离子体效果绘制问题修复方案

你的代码核心问题在于:

  • c和d是固定常数(np.cos(20)、np.sin(20)计算后是单一数值),导致z最终也是一个固定值,所以imshow只会输出纯色块,完全无法生成随坐标变化的等离子体纹理。
  • 等离子体效果需要基于二维坐标x、y生成动态变化的纹理,必须让z成为x和y的函数。

修正后的基础版代码

import numpy as np
import matplotlib.pyplot as plt

# 生成更高分辨率的二维坐标网格
x = np.linspace(-np.pi, np.pi, 200)
y = np.linspace(-np.pi, np.pi, 200)
x, y = np.meshgrid(x, y)

# 组合多频余弦函数生成等离子体纹理
z = np.abs(np.cos(x * 5 + y * 3)) + np.abs(np.cos(x * 2 + y * 7)) * 0.5
z = z / z.max()  # 归一化到0-1区间,提升对比度

plt.imshow(z, cmap='plasma')  # 用plasma色卡匹配等离子体视觉效果
plt.axis('off')
plt.show()

进阶版:基于Perlin噪声的真实等离子体效果

如果想要更贴近真实等离子体的随机流动感,可以使用Perlin噪声(需先安装库:pip install noise):

import numpy as np
import matplotlib.pyplot as plt
import noise

width, height = 200, 200
scale = 10.0  # 控制噪声的精细程度

# 生成二维Perlin噪声纹理
z = np.zeros((height, width))
for i in range(height):
    for j in range(width):
        z[i][j] = noise.pnoise2(
            i/scale, j/scale,
            octaves=3,  # 噪声层级,越多纹理越复杂
            persistence=0.5,  # 振幅衰减系数
            lacunarity=2.0,  # 频率增长系数
            repeatx=width, repeaty=height, base=0
        )

# 归一化到0-1范围
z = (z - z.min()) / (z.max() - z.min())

plt.imshow(z, cmap='plasma')
plt.axis('off')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:25:39