【问题标题】:Generate CDF plot with markers使用标记生成 CDF 图
【发布时间】:2020-07-29 02:20:57
【问题描述】:

似乎是一个微不足道的问题,但我不知道如何绘制我的原始 CDF 数据和放置标记。数据如下所示:

10.45 925.0
20.56 928.0
30.63 948.0
50.10 955.0
80.62 961.0
90.00 978.0
98.89 1026.0

col 1 是 %,col 2 是值。因此,例如,10.45% 的用户存储 925 MB 或更少。我想:

  1. 绘制 CDF 的 png 图表
  2. 在此图表上标记 10%、50%、90%、99%。 我怎样才能在python中实现这一点?我基本上没有绘图经验。

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    可以使用step 绘制原始 CDF。您可以选择如何绘制步骤:pre 表示从x[i-1]x[i](默认)或postx[i]x[i+1] 绘制的线。

    (当您谈到标记时,我假设您的意思是 y 轴上的刻度线和网格线,否则如果您的数据包含精确标记值的条目,例如 90 %,则不清楚将标记放置在哪里) .

    import numpy as np
    import matplotlib.pyplot as plt
    
    a = np.array([[  10.45,  925.  ],
           [  20.56,  928.  ],
           [  30.63,  948.  ],
           [  50.1 ,  955.  ],
           [  80.62,  961.  ],
           [  90.  ,  978.  ],
           [  98.89, 1026.  ]])
    
    fig, (ax1, ax2) = plt.subplots(ncols=2)
    ticks = [10, 50, 90, 99]
    ticklabels = [f'{t} %' for t in ticks]
    
    ax1.step(a[:,1], a[:,0], where='pre')  # default
    ax1.yaxis.set_ticks(ticks)
    ax1.yaxis.set_ticklabels(ticklabels)
    ax1.yaxis.grid(True)
    ax1.set_ylim(0, 100)
    ax1.set_title('pre')
    
    ax2.step(a[:,1], a[:,0], where='post')
    ax2.yaxis.set_ticks(ticks)
    ax2.yaxis.set_ticklabels(ticklabels)
    ax2.yaxis.grid(True)
    ax2.set_ylim(0, 100)
    ax2.set_title('post')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多