Python 修改箱线图输出

Python 修改箱线图输出,python,pandas,matplotlib,Python,Pandas,Matplotlib,根据文件,我用熊猫做了这个图: import pandas as pd import numpy as np import pyplot as plt df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D']) df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model

根据文件,我用熊猫做了这个图:

import pandas as pd
import numpy as np
import pyplot as plt

df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
plt.figure()
bp = df.boxplot(by="models")

如何修改此绘图

我想:

  • 将排列从(2,2)修改为(1,4)
  • 更改标签和标题、文本和字体大小
  • 删除“[models]”文本

如何将此绘图保存为pdf?

使用pandas中的boxplot函数可以执行的许多操作,请参阅

  • 您已经可以修改排列,并更改字体大小:

    import pandas as pd
    import numpy as np
    import pyplot as plt
    
    df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
    df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
    bp = df.boxplot(by="models", layout = (4,1), fontsize = 14)
    
  • 更改列标签可以通过更改数据框本身的列标签来完成:

    df.columns(['E', 'F', 'G', 'H', 'models'])
    
  • 对于进一步的定制,我将使用matlotlib本身的功能;你可以看看这些例子


在pandas中使用boxplot功能可以执行的许多操作,请参阅

  • 您已经可以修改排列,并更改字体大小:

    import pandas as pd
    import numpy as np
    import pyplot as plt
    
    df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
    df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
    bp = df.boxplot(by="models", layout = (4,1), fontsize = 14)
    
  • 更改列标签可以通过更改数据框本身的列标签来完成:

    df.columns(['E', 'F', 'G', 'H', 'models'])
    
  • 对于进一步的定制,我将使用matlotlib本身的功能;你可以看看这些例子

      • 对于布局,使用
        layout
      • 要设置x标签,请使用
        设置标签(“”)
      • 对于图形标题,请使用
        figure.subtitle()
      • 要更改图形大小,请使用
        figsize=(宽、高)
        (英寸)
      注:行
      np.asarray(bp).restrape(-1)
      将子地块的布局(例如2x2)转换为数组

      代码:

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      
      df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
      df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
      bp = df.boxplot(by="models",layout=(4,1),figsize=(6,8))
      [ax_tmp.set_xlabel('') for ax_tmp in np.asarray(bp).reshape(-1)]
      fig = np.asarray(bp).reshape(-1)[0].get_figure()
      fig.suptitle('New title here')
      plt.show()
      
      结果:

      • 对于布局,使用
        layout
      • 要设置x标签,请使用
        设置标签(“”)
      • 对于图形标题,请使用
        figure.subtitle()
      • 要更改图形大小,请使用
        figsize=(宽、高)
        (英寸)
      注:行
      np.asarray(bp).restrape(-1)
      将子地块的布局(例如2x2)转换为数组

      代码:

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      
      df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
      df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
      bp = df.boxplot(by="models",layout=(4,1),figsize=(6,8))
      [ax_tmp.set_xlabel('') for ax_tmp in np.asarray(bp).reshape(-1)]
      fig = np.asarray(bp).reshape(-1)[0].get_figure()
      fig.suptitle('New title here')
      plt.show()
      
      结果:


      这对我不起作用,我得到了
      AttributeError:'numpy.ndarray'对象没有属性'setxlabel
      @spore234注释行
      bp=df.boxplot(by=“models”,layout=(1,4))
      并在其前后放置一个
      print bp
      ,运行代码并将输出结果粘贴到此处我从print(缩短它):[[谢谢,这很有效。你知道我如何更改figsize吗?让我们一起来吧。这对我不起作用,我得到了
      AttributeError:'numpy.ndarray'对象没有属性'setxlabel
      @spore234注释行
      bp=df.boxplot(by=“models”,layout=(1,4))
      并在其前后放置一个
      打印bp
      ,运行代码并将输出结果粘贴到此处。我从打印中获得此结果(缩短它):[[谢谢,这很有效。你知道如何更改figsize吗?让我们来看看。