在一个图中组合框线图

时间:2019-12-02 00:39:19

标签: python matplotlib plot

我有一个包含Q和S两列的数据集。下面显示了它的一个示例:

    Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:66)
Caused by: com.amazonaws.SdkClientException: Unable to execute HTTP request: Timeout waiting for connection from pool
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1175)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1121)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:770)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:744)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:726)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:668)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:532)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:512)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4921)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4867)
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1467)
    at com.test.spark.javaspark.JavasparkApplication.main(JavasparkApplication.java:42)
    ... 5 more
Caused by: org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:313)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:279)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.amazonaws.http.conn.ClientConnectionRequestFactory$Handler.invoke(ClientConnectionRequestFactory.java:70)
    at com.amazonaws.http.conn.$Proxy43.get(Unknown Source)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:191)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
    at com.amazonaws.http.apache.client.impl.SdkHttpClient.execute(SdkHttpClient.java:72)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1297)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1113)
    ... 16 more

基于“ S”列中的值,我定义了三组:

df = pd.DataFrame(np.array([[1,40], [2, 51], [3, 59], [4, 10], 
[5, 30], [7, 20], [9, 21], [13, 30], [15, 70], [2, 81], [3, 85], 
[4, 67], [9, 120], [2, 481], [12, 51], [16, 120], [8, 9], [14, 15], 
[11, 7], [12, 110], [6, 4], [9, 220], [1, 40], [2, 15], [14, 82], [7, 50]]),columns=['Q', 'S'])

此外,我还为“ Q”列定义了三个组:

Group_1A = df[(df['S'] >= 0) & (df['S'] <= 3)]
Group_2A = df[(df['S'] >= 4) & (df['S'] <= 8)]
Group_3A = df[(df['S'] >= 9) & (df['S'] <= 16)]

我需要弄清楚每组中S的分布,并且需要绘制一个包括所有9个箱形图的图。

最终图应如下图所示: enter image description here

我可以绘制每个箱形图,但是我不知道如何在一个图中显示所有箱形图。 例如,我可以使用以下代码绘制Group_1A和Group_1B的箱线图:

Group_1B = df[(df['Q'] >= 0) & (df['Q'] <= 10)]
Group_2B = df[(df['Q'] >= 11) & (df['Q'] <= 50)]
Group_3B = df[(df['Q'] >= 51) & (df['Q'] <= 481)]

但是,这只给了我9个箱型图中的1个。

我想知道是否有人可以帮助我。

预先感谢

1 个答案:

答案 0 :(得分:0)

我刚刚发现我需要使用matplolib.subplots。