sid图像数据_sid的图像显示和绘图

本文介绍了使用matplotlib库在图像显示和绘图中保持轴对齐的多种方法,包括通过调整子图空间、使用InsetPosition、轴分隔器、计算纵横比以及动态复制位置等策略,确保图像和分布图的一致性。
摘要由CSDN通过智能技术生成

有很多方法可以解决这个问题。下面的所有内容都会给出或多或少相同的图像

A、 减少可用空间

您可以减少可用空间,使两个绘图都限制在相同的垂直边距内。这可以通过降低身材高度fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6,2.3), ...)

{/g1}>

使用subplots_adjust限制页边距

^{pr2}$

B、 使用InsetPosition

您可以使用mpl_toolkits.axes_grid1.inset_locator.InsetPosition来调整第二个轴的坐标,使之与第一个轴的坐标相匹配。在import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.axes_grid1.inset_locator import InsetPosition

def visualize(arr):

fig, (ax1, ax2) = plt.subplots(1, 2,

gridspec_kw = {'width_ratios': [1, 3]})

ax1.imshow(arr)

flat = arr.flatten()

x = flat[~np.isnan(flat)]

sns.distplot(x, ax=ax2)

ip = InsetPosition(ax1, [1.5,0,3,1])

ax2.set_axes_locator(ip)

plt.show()

arr = np.random.randn(200,120)

visualize(arr)

C、 使用轴分隔器

您可以只为图像创建轴,然后使用mpl_toolkits.axes_grid1.make_axes_locatable在它旁边创建一个新轴。在import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.axes_grid1 import make_axes_locatable

def visualize(arr):

fig, ax = plt.subplots()

divider = make_axes_locatable(ax)

ax2 = divider.new_horizontal(size="300%", pad=0.5)

fig.add_axes(ax2)

ax.imshow(arr)

flat = arr.flatten()

x = flat[~np.isnan(flat)]

sns.distplot(x, ax=ax2)

plt.show()

arr = np.random.randn(200,120)

visualize(arr)

D、 计算所需的纵横比import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

def visualize(arr):

gkw = {'width_ratios':[1, 3] }

fig, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw = gkw )

ax1.imshow(arr)

flat = arr.flatten()

x = flat[~np.isnan(flat)]

sns.distplot(x, ax=ax2)

ya = np.diff(np.array(ax2.get_ylim()))[0]

xa = np.diff(np.array(ax2.get_xlim()))[0]

wa = gkw['width_ratios'][0]/float(gkw['width_ratios'][1])

ia = arr.shape[0]/float(arr.shape[1])

ax2.set_aspect(float(wa*ia/(ya/xa)))

plt.show()

arr = np.random.randn(200,120)

visualize(arr)

E、 动态复制位置

您可以获得左绘图的位置并将其y坐标复制到右子图的位置。这是对现有代码的一个很好的附加组件。这一缺陷是必要的,因为后续更改图形尺寸需要重新计算位置。在import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

def visualize(arr):

gkw = {'width_ratios':[1, 3] }

fig, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw = gkw )

ax1.imshow(arr)

flat = arr.flatten()

x = flat[~np.isnan(flat)]

sns.distplot(x, ax=ax2)

def on_resize(evt=None):

ax1.apply_aspect()

bb1 = ax1.get_position()

bb2 = ax2.get_position()

bb2.y0 = bb1.y0; bb2.y1 = bb1.y1

ax2.set_position(bb2)

fig.canvas.mpl_connect("resize_event", on_resize)

on_resize()

plt.show()

arr = np.random.randn(200,120)

visualize(arr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值