首页 > 解决方案 > 在 pcolor 图上添加 $y=x$ 行:它不起作用

问题描述

考虑以下最小的工作示例:

import numpy as np
from matplotlib.pyplot import *
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cbook as cbook
u=list(map(lambda x:pow(10,x),np.arange(-2,1+0.1,0.1).tolist()))
v=list(map(lambda x:pow(10,x),np.arange(-2,1+0.1,0.1).tolist()))

[X,Y]=np.meshgrid(u,v)
Z1=np.ones((len(u),len(v)))

fig, ax = plt.subplots()
pcm = ax.pcolor(X, Y, Z1,norm=colors.LogNorm(vmin=Z1.min(), vmax=Z2.max()),
                   cmap='PuBu_r',edgecolors='black')
plt.xscale('log', basex=10)
plt.yscale('log', basey=10)
fig.colorbar(pcm, extend='max')
plt.plot([u[0], v[0]], [u[-1], v[-1]], 'k-', lw=2)
plt.title('test1')
plt.show()

我想在图表上显示一条对角线(方程 y=x)。我添加的 plt.plot([u[0], v[0]], [u[-1], v[-1]], 'k-', lw=2) 行不起作用.

你能帮我解决这个问题吗?

标签: pythonmatplotlib

解决方案


尝试切换元素:

fig, ax = plt.subplots()
pcm = ax.pcolor(X, Y, Z1,norm=colors.LogNorm(vmin=Z1.min(), vmax=Z2.max()),
                   cmap='PuBu_r',edgecolors='black')
plt.xscale('log', basex=10)
plt.yscale('log', basey=10)
fig.colorbar(pcm, extend='max')
plt.plot([u[0], u[-1]], [v[0], v[-1]], 'k-', lw=2) # Here the difference
plt.title('test1')
plt.show()

推荐阅读