Matplotlib:多线图

时间:2019-01-17 10:35:22

标签: python matplotlib

我的数据框如下:

Bin           A      B      C   Proba-a%   Proba-b%   Proba-c%    gamma%
CPB%                                                                    
0.100     20841  23195  24546  34.503457  27.103303  22.859837     0.100
0.200      2541   4187   5176  26.517913  13.944499   6.593338     0.200
0.300      2750   1823   1122  17.875550   8.215217   3.067253     0.300
0.400       999    829    448  14.736015   5.609856   1.659334     0.400
0.500       604    495    217  12.837838   4.054181   0.977373     0.500
0.600       436    348    116  11.467630   2.960495   0.612822     0.600
0.700       367    247     76  10.314268   2.184230   0.373979     0.700
0.800       305    186     35   9.355751   1.599673   0.263985     0.800
0.900       280    115     24   8.475801   1.238254   0.188561     0.900
1.000       200    102     18   7.847266   0.917691   0.131992     1.000

我想做的是在x轴上显示“伽玛%”,并且有一个包含三条线A,B和C的图表。我看到您必须多次调用plt的地方,我尝试过:

plt.plot(x='gamma%', y='A', data=df_b)
plt.plot(x='gamma%', y='B',data=df_b)
plt.plot(x='gamma%', y='C',data=df_b)

但是我遇到了以下错误:

ValueError: Using arbitrary long args with data is not supported due to ambiguity of arguments.
Use multiple plotting calls instead.

有什么主意吗?谢谢!

2 个答案:

答案 0 :(得分:1)

实际上,您的方法很好,只是不要明确地说出x='gamma%'。而是只需传递'gamma%'之类的列名,它就可以工作

示例:

plt.plot('gamma%', 'A', data=df_b)

这里直接来自documentation

  

绘制标签数据

     

有一种方便的方法可以绘制带有标签数据的对象(即   索引obj ['y']可以访问的数据。而不是给   x和y中的数据,您可以在data参数中提供对象,   只需给出x和y的标签即可:

     
    

plot('xlabel', 'ylabel', data=obj)

  

答案 1 :(得分:0)

您还可以直接使用DataFrame以循环方式绘制三列,而不必编写以下三个单独的绘制命令

fig, ax = plt.subplots()

for cols in ['A', 'B', 'C']:
    df_b.plot('gamma%', cols, ax=ax)

enter image description here