【问题标题】:How i can plot this contour?我如何绘制这个轮廓?
【发布时间】:2022-01-07 00:09:51
【问题描述】:

我想得到这个没有圆圈的结果:

这是我的代码:

from matplotlib import pyplot as plt                                                     
import numpy as np                                                                            
x = [-69,-60,-45,-30,-15,0.5,15,30,45,60,69,-69,-60,-45,-30,-15,0.5,15,30,45,60,69,-69,-60,-45,-30,-15,0.5,
 15,30,45,60, 69,-69,-60,-45,-30,-15,0.5,15,30,45,60,69,-69,-60,-45,-30,-15,0.5,15,30,45,60,69,-69,-60,
 -45,-30,-15,0.5,15,30,45,60,69,-69,-60,-45,-30,-15,0.5,15,30,45,60,69]                       
y = [31.5,31.5,31.5,31.5,31.5,31.5,31.5,31.5,31.5,31.5,31.5,30,30,30,30,30,30,30,30,30,30,30,24,24,24,24,24,24,24,
 24,24,24,24,18,18,18,18,18,18,18,18,18,18,18,12,12,12,12,12,12,12,12,12,12,12,6,6,6,6,6,6,6,6,6,6,6,0.5,0.5,0.5
 ,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]                                                           
Up = [0.0762986, 0.151387, 0.209126, 0.234554, 0.244589, -0.245425, 0.238814, -0.222226, 0.20225736, 0.13785233,
  0.054526295, 0.0989059, 0.201592, 0.281129, 0.315983, 0.330039, -0.33129, 0.33185747, 0.286557, -0.254695
  ,-0.169509, 0.0621615, 0.157035, 0.334674, 0.479315, 0.545468, 0.573373, -0.577782, 0.57240381, -0.521733
  ,-0.440071, -0.284811, 0.0982288, 0.193492, 0.422493, 0.618154, 0.709479, 0.748067, -0.754549, 0.74816
  ,0.70471109, 0.59970581, 0.38760913, 0.13433145, 0.21642, 0.480047, 0.713037, 0.822546, 0.869416, -0.878781
  ,0.87194901, 0.82220797, 0.66209, 0.407971, 0.15190482, 0.229469, 0.512671, 7.68E-01, 0.888104, 0.940847
  ,-0.952318, 0.94503339, 0.89103107, 0.717762, 0.438857, 0.147151, 0.233621, 0.523136, 0.785145, 0.909226,
  0.964092, 0.976388, 0.96905899, 0.91365679, 0.77578289, 0.48991026, 0.150231]              
cs = plt.contourf(x, y, Up)                                                  
plt.colorbar(cs)

但我收到此错误:

TypeError:输入 z 必须是 2D,而不是 1D

【问题讨论】:

  • 如果您的数据的整个维度丢失,这将很难提供帮助。
  • plt.tricontourf(x, y, Up) 适用于未网格化的 x 和 y

标签: arrays list numpy matplotlib contourf


【解决方案1】:

如果您的数据不在常规矩形网格上,您可以使用plt.tricontourf(x, y, Up) 代替plt.contourf()

在这种情况下,数据似乎位于 7x11 网格上。您可以将 3 个数组重塑为该 2D 形式:

from matplotlib import pyplot as plt
import numpy as np

x = [-69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69, -69, -60, -45, -30, -15, 0.5, 15, 30, 45, 60, 69]
y = [31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
Up = [0.0762986, 0.151387, 0.209126, 0.234554, 0.244589, -0.245425, 0.238814, -0.222226, 0.20225736, 0.13785233, 0.054526295, 0.0989059, 0.201592, 0.281129, 0.315983, 0.330039, -0.33129, 0.33185747, 0.286557, -0.254695, -0.169509, 0.0621615, 0.157035, 0.334674, 0.479315, 0.545468, 0.573373, -0.577782, 0.57240381, -0.521733, -0.440071, -0.284811, 0.0982288, 0.193492, 0.422493, 0.618154, 0.709479, 0.748067, -0.754549, 0.74816, 0.70471109, 0.59970581, 0.38760913, 0.13433145, 0.21642, 0.480047, 0.713037, 0.822546, 0.869416, -0.878781, 0.87194901, 0.82220797, 0.66209, 0.407971, 0.15190482, 0.229469, 0.512671, 7.68E-01, 0.888104, 0.940847, -0.952318, 0.94503339, 0.89103107, 0.717762, 0.438857, 0.147151, 0.233621, 0.523136, 0.785145, 0.909226, 0.964092, 0.976388, 0.96905899, 0.91365679, 0.77578289, 0.48991026, 0.150231]

x = np.array(x).reshape(7, 11)
y = np.array(y).reshape(7, 11)
Up = np.array(Up).reshape(7, 11)
cs = plt.contourf(x, y, Up, cmap='turbo')
plt.colorbar(cs)

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 2018-07-09
    • 2013-08-16
    • 2020-02-06
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多