使用matplotlib在python中将箱须图与日期时间进行比较

时间:2019-12-05 15:32:37

标签: python pandas datetime matplotlib boxplot

我有以下数据:

Total_flux_plot_time = [DT.datetime(2018, 8, 18, 8, 15), DT.datetime(2018, 8, 19, 11, 40),
                        DT.datetime(2018, 8, 20, 7, 50), DT.datetime(2018, 8, 21, 7, 15), 
                        DT.datetime(2018, 8, 22, 6, 30, 30), 
                        DT.datetime(2018, 8, 23, 6, 50), 
                        DT.datetime(2018, 8, 24, 9, 10), DT.datetime(2018, 8, 24, 21,35),
                        DT.datetime(2018, 8, 25, 9, 17), DT.datetime(2018, 8, 25, 16, 55), 
                        DT.datetime(2018, 8, 26, 3, 30), DT.datetime(2018, 8, 27, 12, 30), 
                        DT.datetime(2018, 8, 28, 2, 15)]

Total_flux_min = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1230.0, 0.0, 2140.0, 4.0, 0.0, 0.0]
Total_flux_Q1 = [4.6668, 1.1667, 3.5000999999999998, 1.1667, 0.0, 0.0, 1.1667, 
                 1484.0, 0.0, 2440.0, 28.000000000000004, 0.0, 2.0]                     
Total_flux = [7.0001999999999995, 2.3334, 4.6668, 2.3334, 0.0, 0.0, 1.1667, 
              1598.0, 2.0, 2680.0, 34.0, 0.0, 4.0]
Total_flux_Q3 = [8.1669, 4.6668, 7.0001999999999995, 3.5000999999999998, 0.0, 
                 1.1667, 2.3334, 1707.9999999999998, 2.0, 2820.0, 44.0, 0.0, 6.0]
Total_flux_max = [21.0006, 12.8337, 21.0006, 12.8337, 8.1669, 17.5005, 9.3336, 
                  1976.0000000000002, 12.0, 3279.9999999999995, 88.0, 6.0, 246.0]

d = {'Date_time': Total_flux_plot_time,
     'Minimum': Total_flux_min,
     'First quartile': Total_flux_Q1,
     'Median': Total_flux,
     'Third quartile': Total_flux_Q3,
     'Maximum:': Total_flux_max}

test = pd.DataFrame(d)

我想做的是在Y轴上绘制箱形图和晶须图,并使用最小值,Q1,中值,Q3和最大值与X轴上的日期时间进行比较。给定值的范围,我正在考虑在y轴上使用“符号”。但是,我无法使箱形图与日期时间相对应(使用matplotlib)。我一直在尝试使用补丁中的矩形,但这比我想象的要棘手。大概我需要在这里使用date2num,但是我无法确切地知道怎么做。这里的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用the Axes.bxp() function从摘要统计信息中轻松绘制箱线图。您必须对字典进行一些转换,以使其具有正确的格式,并且需要一个@media screen and (max-width:990px){ li.search, li.lang { display: block !important; } } 参数来将框线图沿x轴放置。

您已经猜到了,您必须使用display: none来转换日期,但是在那之后,只需要找到合适的定位器/格式器来修饰x轴刻度标签即可。有关更多详细信息,请参见the documentation on the dates module

display: block

enter image description here