首页 > 解决方案 > 更改图形图像的比例

问题描述

我尝试生成一个图形并将图形的图像保存在 python 中。尽管这些值的“绘图”似乎没问题,我可以得到我的图片,但图表的比例发生了严重变化。

如果您将教程示例中的正确图表与我 从不同数据集生成的错误图表进行比较,则曲线从底部切到早期:Y 轴应该从最高值开始,我还应该看到最高 X 的曲线值(在我的情况下约为 10^3)。

但老实说,我认为问题在于 y 轴的比例,但实际上不知道我应该更改哪些参数来修复它。我试图玩一些数字(见下面的脚本),但没有任何好的结果。

这是计算和生成图形图像的代码:

import numpy as np
hic_data = load_hic_data_from_reads('/home/besy/Hi-C/MOREX/TCC35_parsedV2/TCC35_V2_interaction_filtered.tsv', resolution=100000)
min_diff  = 1
max_diff  = 500
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(12, 12))
    for cnum, c in enumerate(hic_data.chromosomes):
        if c in ['ChrUn']:
            continue
        dist_intr = []
        for diff in xrange(min_diff, min((max_diff, 1 + hic_data.chromosomes[c]))):
            beg, end = hic_data.section_pos[c]
            dist_intr.append([])
            for i in xrange(beg, end - diff):
                dist_intr[-1].append(hic_data[i, i + diff])
        mean_intrp = []
        for d in dist_intr:
            if len(d):
                mean_intrp.append(float(np.nansum(d)) / len(d))
            else:
                mean_intrp.append(0.0)
        xp, yp = range(min_diff, max_diff), mean_intrp
        x = []
        y = []
        for k in xrange(len(xp)):
            if yp[k]:
                x.append(xp[k])
                y.append(yp[k])
        l = plt.plot(x, y, '-', label=c, alpha=0.8)
        plt.hlines(mean_intrp[2], 3, 5.25 + np.exp(cnum / 4.3), color=l[0].get_color(),
                   linestyle='--', alpha=0.5)
        plt.text(5.25 + np.exp(cnum / 4.3), mean_intrp[2], c, color=l[0].get_color())
        plt.plot(3, mean_intrp[2], '+', color=l[0].get_color())
    plt.xscale('log')
    plt.yscale('log')
    plt.ylabel('number of interactions')
    plt.xlabel('Distance between bins (in 100 kb bins)')
    plt.grid()
    plt.ylim(2, 250)
    _ = plt.xlim(1, 110)
fig.savefig('/home/besy/Hi-C/MOREX/TCC35_V2_results/filtered/TCC35_V2_decay.png', dpi=fig.dpi)

我认为问题在于规模我需要 y 轴从 10^-1 (0.1) 开始,为了改变这一点,我尝试了这个:

min_diff  = 0.1
.
.
.
dist_intr = []
for diff in xrange(min_diff, min((max_diff, 0.1 + hic_data.chromosomes[c]))):
.
.
.
plt.ylim((0.1, 20))

但是这个值返回:“需要整数参数,得到浮点数”

我也尝试过使用:max_diff、plt.ylim 和 plt.xlim 参数,但没有太大变化。

我想问你什么参数以及我需要如何更改才能生成正确聚焦的图形的图像。先感谢您。

标签: pythonpython-2.7matplotlibpython-2.x

解决方案


推荐阅读