Matplotlib,在散点图,小提琴图和箱图之间同步时间轴

时间:2017-07-07 10:30:28

标签: python numpy matplotlib

为了将各种信息与同步的x轴(时间轴numpy.datetime64)结合起来,我写了以下例子:

import numpy as np
import matplotlib.pyplot as plt

x_axis = [np.datetime64("2016-01-01"), np.datetime64("2016-02-01")]
y_data = [3, 5]

fig = plt.figure()
ax1 = fig.add_subplot(311)
ax2 = fig.add_subplot(312, sharex=ax1)
ax3 = fig.add_subplot(313, sharex=ax1)

# Plot the scatter plot    
ax1.scatter(x_axis, y_data)

# Now draw the violinplot and the boxplot
for (timestamp, y) in zip(x_axis, y_data):
    data = np.random.rand(100) + y
    ax2.violinplot(data,
                   positions=[timestamp],
                   widths=[np.timedelta64(500000, 's')])
#    ax3.boxplot(data,
#                positions=[timestamp],
#                widths=[np.timedelta64(10, 's')])

现在的问题是第三个(注释)部分:当以正确的单位定义位置和具有一切正常时,所以可以在时间轴上绘制散点图,但是在绘制胡须时,箱图失败。我收到TypeError: ufunc multiply cannot use operands with types dtype('float64') and dtype('<M8[D]')

有没有办法在实时轴上正确绘制箱线图,以便同步按要求工作?

PS:注意,宽度以秒为单位,如果时间单位太大,小提琴图不再光滑......

1 个答案:

答案 0 :(得分:0)

您应该查看seabornviolinplot()有多个选项可以包含箱图等。