调整单个子地块宽度的简单方法?

2024-04-25 00:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

aspect='equal'为长向量绘制几乎一条直线,而='auto'将其绘制为矩阵,这也是不需要的。如何强制vec显示为SMALLVEC?我见过相关的SO,但它们都相当冗长,并且在我的应用程序中添加了很多代码——是否有一些简短的东西,比如ax.set_width()?优选地ax来自plt.subplots()axes



代码

import matplotlib.pyplot as plt
import numpy as np

KWS = dict(weight='bold', fontsize=14)

def plot_auto(mat, vec):
    fig, axes = plt.subplots(1, 2)
    plt.suptitle("AUTO", **KWS)
    axes[0].imshow(mat, aspect='auto')
    axes[1].imshow(vec, aspect='auto')
    plt.show()

def plot_equal(mat, vec):
    fig, axes = plt.subplots(1, 2)
    plt.suptitle("EQUAL", **KWS)
    axes[0].imshow(mat, aspect='auto')
    axes[1].imshow(vec, aspect='equal')
    plt.show()

def plot_smallvec(smallvec):
    plt.imshow(smallvec)
    plt.title("SMALLVEC", **KWS)

np.random.seed(0)
mat = np.random.randn(500, 500)
vec = np.random.randn(500, 1)
smallvec = np.random.randn(25, 1)

plot_auto(mat, vec)
plot_equal(mat, vec)
plot_smallvec(smallvec)

Tags: autoplotdefnppltrandomequalimshow
1条回答
网友
1楼 · 发布于 2024-04-25 00:29:58

感谢@ImportanceOfBeingErnest建议对^{}参数(num)使用第三个选项。我想,如果您想匹配由不同形状数组生成的纵横比,那么包含通用公式可能会很有用。公式是

(reference.shape[0] / reference.shape[1]) / (target.shape[0] / target.shape[1])

其中reference是要匹配其打印纵横比的数组,target是要使用匹配纵横比打印的数组。将其包含在示例代码中

# ...
def plot_equal(mat, vec, smallvec):
    fig, axes = plt.subplots(1, 2)
    plt.suptitle("EQUAL", **KWS)
    axes[0].imshow(mat, aspect='auto')
    axes[1].imshow(vec, aspect=(smallvec.shape[0] / smallvec.shape[1]) / 
                   (vec.shape[0] / vec.shape[1]))
    plt.show()

# ...
plot_equal(mat, vec, smallvec)

给予

enter image description here


注意  -   此公式可能会因图形的其他变化而崩溃,但在示例代码的范围内,它工作正常

相关问题 更多 >