如何使用matplotlib重新调整坐标轴?

huangapple go评论96阅读模式
英文:

How to rescale axes with matplotlib?

问题

我正在使用 pcolormesh 绘制图形:

  1. fig, ax = plt.subplots()
  2. ax.pcolormesh(Omega_re, Omega_im, brightness, cmap="gray", shading="gouraud")
  3. ax.set_xlabel(r"$Re(\omega)$")
  4. ax.set_ylabel(r"$Im(\omega)$")
  5. ax.set_aspect(1)
  6. fig.show()

其中

  1. Omega_re = array([[2. , 2.75, 3.5 , 4.25, 5. ], [2. , 2.75, 3.5 , 4.25, 5. ],
  2. [2. , 2.75, 3.5 , 4.25, 5. ], [2. , 2.75, 3.5 , 4.25, 5. ],
  3. [2. , 2.75, 3.5 , 4.25, 5. ]])
  4. Omega_im = array([[0. , 0. , 0. , 0. , 0. ], [0.0005, 0.0005, 0.0005, 0.0005, 0.0005],
  5. [0.001 , 0.001 , 0.001 , 0.001 , 0.001 ], [0.0015, 0.0015, 0.0015, 0.0015, 0.0015],
  6. [0.002 , 0.002 , 0.002 , 0.002 , 0.002 ]])
  7. brightness = array([[4.05649772, 3.7299948 , 2.61262439, 4.2841897 , 3.40368949],
  8. [4.05649076, 3.72997624, 2.61258381, 4.2841071 , 3.40353591],
  9. [4.05648399, 3.72995772, 2.61254052, 4.28402084, 3.40338229],
  10. [4.05647716, 3.72993901, 2.6124984 , 4.28393373, 3.40322865],
  11. [4.05647025, 3.72992049, 2.61245428, 4.2838476 , 3.40307499]])

但由于 x 轴范围从 0 到 5,y 轴范围从 0 到 0.002,结果看起来“扁平”:

如何使用matplotlib重新调整坐标轴?

有没有一种方法可以重新缩放 y 轴,使图形看起来更好?下面是当前显示的图片。

英文:

I am plotting a graph using pcolormesh:

  1. fig, ax = plt.subplots()
  2. ax.pcolormesh(Omega_re, Omega_im, brightness, cmap="gray", shading="gouraud")
  3. ax.set_xlabel(r"$Re(\omega)$")
  4. ax.set_ylabel(r"$Im(\omega)$")
  5. ax.set_aspect(1)
  6. fig.show()

where

  1. Omega_re = array([[2. , 2.75, 3.5 , 4.25, 5. ], [2. , 2.75, 3.5 , 4.25, 5. ],
  2. [2. , 2.75, 3.5 , 4.25, 5. ], [2. , 2.75, 3.5 , 4.25, 5. ],
  3. [2. , 2.75, 3.5 , 4.25, 5. ]])
  4. Omega_im = array([[0. , 0. , 0. , 0. , 0. ], [0.0005, 0.0005, 0.0005, 0.0005, 0.0005],
  5. [0.001 , 0.001 , 0.001 , 0.001 , 0.001 ], [0.0015, 0.0015, 0.0015, 0.0015, 0.0015],
  6. [0.002 , 0.002 , 0.002 , 0.002 , 0.002 ]])
  7. brightness = array([[4.05649772, 3.7299948 , 2.61262439, 4.2841897 , 3.40368949],
  8. [4.05649076, 3.72997624, 2.61258381, 4.2841071 , 3.40353591],
  9. [4.05648399, 3.72995772, 2.61254052, 4.28402084, 3.40338229],
  10. [4.05647716, 3.72993901, 2.6124984 , 4.28393373, 3.40322865],
  11. [4.05647025, 3.72992049, 2.61245428, 4.2838476 , 3.40307499]])

But since the x-axis ranges from 0 to 5 and the y-axis ranges from 0 to 0.002, the result appears "flattened.":

如何使用matplotlib重新调整坐标轴?

Is there a way to rescale the y-axis so that the graph looks visually better? Below is a picture of how it is currently being displayed.

答案1

得分: 0

轴线是“平的”,因为 ax.set_aspect(1),它将轴线的纵横比设置为相等。换句话说,1英寸(例如)在两个轴上的长度相同。如果删除这行代码,那么将会得到一个自动生成的纵横比,可以显示更多细节。

英文:

The axes are "flat" because of ax.set_aspect(1), which sets the aspect ratio of the axes to be equal. In other words, 1 inch (for example) is the same length on both axes. If you remove that line then you'll get an automatically-generated aspect ratio that will show more detail.

答案2

得分: 0

将以下内容中的代码部分翻译如下:

  1. ax.set_aspect(1)

替换为

  1. ax.set_aspect("auto")

或者直接删除这行代码。

set_aspect(1)(或等效地set_aspect("equal"))会强制坐标轴在x和y方向上使用相同的比例。使用set_aspect("auto")(默认值)允许matplotlib自动确定适合填充图形的比例。

结果

如何使用matplotlib重新调整坐标轴?

英文:

Replace

  1. ax.set_aspect(1)

with

  1. ax.set_aspect("auto")

or simply remove the line entirely.

set_aspect(1) (or equivalently set_aspect("equal")) forces the axes to use the same scaling for x and y. Using set_aspect("auto") (the default) allows matplotlib to infer a good scaling to fill the plot.

Result

如何使用matplotlib重新调整坐标轴?

huangapple
  • 本文由 发表于 2023年7月12日 21:41:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/76671250.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定