首页 > 解决方案 > pyplot log-log 等高线图不起作用

问题描述

当我做等高线图时,事情按预期进行

x = (np.linspace(0, 10))
y = (np.linspace(0, 10))
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, np.sqrt(X) * Y)

在此处输入图像描述

但是,当我将轴设置为 log-log 时,什么都没有显示。当我输入以下代码时,pyplot只显示一个空白屏幕。这是预期的行为吗?如何在对数轴上制作等高线图?

import matplotlib.pyplot as plt
import numpy as np
x = (np.linspace(0, 10))
y = (np.linspace(0, 10))
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, np.sqrt(X) * Y)
plt.xscale('log')
plt.yscale('log')
plt.show()

标签: pythonmatplotlib

解决方案


您看不到任何东西的原因是轴限制太窄。因为0在您的数据集中,log(0)未定义,所以您的轴上的限制不明确,默认为 10 左右的窄范围。如果您扩展 x 和 y 轴,您应该会看到一些数据。

plt.xlim(1, 10)
plt.ylim(1, 10)

推荐阅读