Matplotlib没有设置x,y轴以规则的间隔标记到数据集最大值

时间:2017-10-19 01:16:30

标签: python matplotlib

使用matplotlib稍微加倍并设置x和y轴滴答。

我有一个VO2和VCO2数据的数据框,我希望将其分散为x = VO2和y = VCO2。 它是逐个呼吸(即原始)数据,因此存在> 400个数据点。 当我这样做时,我得到所有400个数据点的x / y标签。因此,我一直在尝试将x / y刻度间隔设置为从0.0开始,并将0.5增加到相应数据集的最大值。它需要通过一个“动态”图(即x,y标记根据数据的最大值而变化),因为它被合并到一个更大的程序中。

当前代码:

import csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


def import_data(fpath):
    with open(fpath, 'r') as f:
        fdata = csv.reader(f)
        fdata = list(fdata)
        df = pd.DataFrame(fdata[1:], columns=fdata[0])
        df.rename(columns=lambda i: i.replace('\'', ''), inplace=True)
        df.columns = [i.lower() for i in df.columns]
        df.t = pd.to_timedelta(df.t).dt.total_seconds()
        df.rename(columns={'t': 't_culm'}, inplace=True)
        df['t'] = df.t_culm - df.t_culm.min()
        df.set_index('t', inplace=True)
        return df


# import data
data = import_data('_data/mpl_data.csv')

if 'vo2' and 'vco2' in data:
    # set x, y variables
    x, y = data.vo2, data.vco2

    # setup figure
    fig, ax = plt.subplots(1, 1)
    ax.scatter(x, y)

    ax.set_xticks(np.arange(0.0, round(float(x.max())) + 0.5, 0.5))
    ax.set_yticks(np.arange(0.0, round(float(y.max())) + 0.5, 0.5))

    ax.set_title('V-Slope')
    ax.set_xlabel('V\'O2 (L.min-1)')
    ax.set_ylabel('V\'CO2 (L.min-1)')

    plt.show()

输出: enter image description here

这不是我所期望的 - 最大x和y值分别为4.5和5.0。这限制了情节显示前10/11刻度标签。

e.g。放大了 enter image description here

有人能说清楚我做错了吗?

修改 下面数据框的.head().tail()可以下载.csv文件here

     t_culm          vo2         vco2       ve/vo2      ve/vco2    petco2
t                                                                        
0.0   121.0   1.39106827   1.17594794  23.27565131  27.53354881  36.28618
2.0   123.0  1.651732905  1.340260757   21.9176962  27.01129598  39.94186
4.0   125.0  1.661732959  1.304045507  21.89457686  27.90005396  40.41926
7.0   128.0   1.74404014  1.424610552  22.36329263  27.37764362   41.9804
9.0   130.0   1.86141934  1.449644274  20.25671442   26.0106846  41.56256
-------------------------------------------------------------------------
685.0   806.0  4.055829465  4.565977319  31.68991968  28.14926598  137.91915
686.0   807.0  4.144702364   4.70023799  32.09388958  28.30061377  142.30906
686.0   807.0   4.11506417  4.617204706  31.28707468  27.88447301  138.67856
687.0   808.0   4.03808704  4.647029051  31.82453689  27.65428161  137.60385
688.0   809.0  3.808044776  4.323517481  31.20141883  27.48142005  127.28648

0 个答案:

没有答案