更改图形imag的比例

2024-09-27 21:23:08 发布

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

我尝试生成一个图并用python保存该图的图像。虽然“绘图”的价值观似乎是好的,我可以得到我的图片,图表的规模是严重移位

如果您将教程示例中的correct graph与从不同数据集生成的bad graph进行比较,则曲线从底部到早期进行切割: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))

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

我还试着玩: max_diff、plt.ylim和plt.xlim参数有一点点变化,但变化不大

我想问你什么参数/s和我需要如何改变,以生成正确聚焦的图形图像。先谢谢你


Tags: infordata参数distdiffpltmin

热门问题