【问题标题】:How to plot the graph in more accurate way?如何以更准确的方式绘制图形?
【发布时间】:2020-01-05 03:33:01
【问题描述】:

我有一个由1440 rows × 297 columns 组成的数据集。我试图根据时间(X 轴)和密度(Y 轴)绘制03_jan_2018,但我遇到了一个问题。结果图不够清晰,X轴也没有出现!!

我想做something like this:

但我的结局是这样的:

谁能帮帮我?

提前致谢!

【问题讨论】:

    标签: python-3.x matplotlib jupyter-notebook


    【解决方案1】:

    一个简单的解决方法是增加图形大小。

    plt.figure(figsize=(80,40))
    plt.plot(data.hour_formatted, data['03_jan_18'])
    plt.show()
    

    【讨论】:

    • 感谢您的帮助,但这些代码都没有解决问题。 (请看图片)
    【解决方案2】:

    我会使用plt.xticks(np.arange(0,25,6)) 来选择您想要的时间。看起来默认情况下它试图放入太多的值,实际上你只需要少数几个值(在这种情况下,只有每 6 小时有一个刻度)。调整范围值以提供您想要的值。

    【讨论】:

    • 好的,发生了什么?它是抛出错误还是文本仍然是黑色的还是什么?
    • 是的,文本仍然是黑色的。
    • 刚刚输出data.hour_formatted时的输出是什么样的?喜欢给我data.hour_formatted[-5:]
    【解决方案3】:

    x 轴已出现,但您似乎面临与here 所述相同的问题。无论如何,我将向您展示如何获得您想要的内容,同时避免 x 轴符号可能出现的问题。

    情节 1:

    代码 1:

    # imports
    import matplotlib.ticker as ticker
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    
    # random data or other data sources
    np.random.seed(123)
    rows = 1440
    df = pd.DataFrame(np.random.uniform(-1,1,size=(rows, 2)),
                      index=pd.date_range('1/1/2000', periods=1440),
                        columns=list('AB'))
    
    df['A'] = df['A'].cumsum()
    df['B'] = df['B'].cumsum()
    
    # Plot
    fig, ax = plt.subplots()
    t = df.index
    ax.plot(t, df['A'])
    ax.plot(t, df['B'], color='red')
    

    您还可以像这样编辑和调整轴符号:

    情节 2:

    代码 2:

    # imports
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    
    # random data or other data sources
    np.random.seed(123)
    rows = 1440
    df = pd.DataFrame(np.random.uniform(-1,1,size=(rows, 2)),
                      index=pd.date_range('1/1/2020', periods=1440),
                        columns=list('AB'))
    
    df['A'] = df['A'].cumsum()
    df['B'] = df['B'].cumsum()
    
    # Make a list of empty myLabels
    myLabels = ['']*len(df.index)
    
    # Plot
    fig, ax = plt.subplots()
    t = df.index
    ax.plot(t, df['A'])
    ax.plot(t, df['B'], color='red')
    
    # Set labels on every Nth element in myLabels specified by the interval variable
    myLabels = ['']*len(df.index)
    interval = 2
    myLabels[::interval] = [item.strftime('%Y - %m - %d') for item in df.index[::interval]]
    ax.xaxis.set_major_formatter(ticker.FixedFormatter(myLabels))
    plt.gcf().autofmt_xdate()
    
    # Tilt the labels
    plt.setp(ax.get_xticklabels(), rotation=30, fontsize=10)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 2019-09-25
      • 1970-01-01
      • 2021-12-12
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      相关资源
      最近更新 更多