循环数据框的列并在Python中单独绘制

时间:2019-07-06 18:36:44

标签: python matplotlib seaborn

下面是我的代码段。我想一次绘制每列相对于线图中的时间。不同图中的每一列 但是该图似乎继续在底部累积较早的值。

import os
import pandas as pd
import numpy as np
from matplotlib import pyplot
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()


import re
def makeLinePlot(df):
    file_name="File Name not passed to this method"
    print("Ploting")
    df2=df
    fig,ax=plt.subplots(figsize=(30,8))
    i=0
    numRos = df.columns.size
    for colName in df.columns:
        i=i+1
        print(file_name,colName)
        df2[colName]=df2[colName].astype(float)
        print(colName,df2[colName].shape)
        g=sns.lineplot(x=df2.index, y=df2[colName], ax=ax)
        colNameR = re.sub('\W+','', colName )
        g.get_figure().savefig(colNameR+".png")


range = pd.date_range('2015-01-01', '2015-01-02', freq='1min')
df = pd.DataFrame(index = range)

# Average speed in miles per hour
df['speed'] = np.random.randint(low=0, high=60, size=len(df.index))
# Distance in miles (speed * 0.5 hours)
df['distance'] = df['speed'] * 0.25 
# Cumulative distance travelled
df['cumulative_distance'] = df.distance.cumsum()
makeLinePlot(df)

enter image description here

1 个答案:

答案 0 :(得分:1)

我对您的代码进行了一些更改,现在看来我已经有了所需的内容。使用以下代码。

import os
import pandas as pd
import numpy as np
from matplotlib import pyplot
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()


import re
def makeLinePlot(df):
    df2=df
    i=0

    numRos = df.columns.size

    fig,ax =plt.subplots( nrows=1, ncols=numRos,figsize=(30,8))

    for index, colName in enumerate(df.columns):
        i=i+1
        df2[colName]=df2[colName].astype(float)
        print(colName,df2[colName].shape)
        g=sns.lineplot(x=df2.index, y=df2[colName], ax=ax[index])
        colNameR = re.sub('\W+','', colName )
        g.get_figure().savefig(colNameR+".png")


range = pd.date_range('2015-01-01', '2015-01-02', freq='1min')
df = pd.DataFrame(index = range)

# Average speed in miles per hour
df['speed'] = np.random.randint(low=0, high=60, size=len(df.index))
# Distance in miles (speed * 0.5 hours)
df['distance'] = df['speed'] * 0.25 
# Cumulative distance travelled
df['cumulative_distance'] = df.distance.cumsum()
makeLinePlot(df)

我知道了。 enter image description here