Python 如何使用多个np.Array创建一个barh图?

Python 如何使用多个np.Array创建一个barh图?,python,numpy,matplotlib,data-visualization,visualization,Python,Numpy,Matplotlib,Data Visualization,Visualization,我正在用Python构建一个可视化,包括tkinter、matplotlib和numpy。 我想在一个barh图中可视化几个numpy数组。这样我就可以分析这个图中的所有内容了。 在我以前的代码中,我只使用子地块实现了这一点。但我总是要注释掉另外两个子地块。 你能帮我把这六个numpy阵列(Netflix_Beg/End、Youtube_Beg/End、Vimeo_Beg/End)想象成一个barh图吗 预期结果应如下所示。这是我用powerpoint和以前的代码创建的 以下是我以前的代码:

我正在用Python构建一个可视化,包括tkinter、matplotlib和numpy。 我想在一个barh图中可视化几个numpy数组。这样我就可以分析这个图中的所有内容了。 在我以前的代码中,我只使用子地块实现了这一点。但我总是要注释掉另外两个子地块。 你能帮我把这六个numpy阵列(Netflix_Beg/End、Youtube_Beg/End、Vimeo_Beg/End)想象成一个barh图吗

预期结果应如下所示。这是我用powerpoint和以前的代码创建的

以下是我以前的代码:

import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk 
import tkinter as tk
import numpy as np

fig, ax = plt.subplots(3, 1, facecolor = "white")

#data
Netflix_Beg = np.array([1,4,500,1500,2800,2960,2700, 5,2000,2000,3100,4000,4150,4150])
Netflix_End = np.array([5,1000,1000,2100,3000,3150,3150, 20,50,600,3500,3800,3960,3700])

Youtube_Beg = np.array([2,5,600,2600,3900,3970,3800, 6,3000,3000,4200,5000,5260,5260])
Youtube_End = np.array([6,2000,2000,3200,4000,4260,4260, 30,60,700,4600,4900,4070,4800])

Vimeo_Beg = np.array([0,3,400,400,1700,1850,1600,4,1000,1000,2000,3000,3040,3040])
Vimeo_End = np.array([4,500,500,1000,2000,2040,2040, 10,40,500,2400,2700,2850,2600])

Netflix = ["Netflix {}".format(i) for i in range(len(Netflix_Beg))]
Ytb = ["Youtube {}".format(i) for i in range(len(Youtube_Beg))]
Vim = ["Vimeo {}".format(i) for i in range(len(Vimeo_Beg))]

#window
root = tk.Tk()
root.title("Overview") 

#plot
Plot_Netflix = plt.barh(range(len(Netflix_Beg)),  Netflix_End-Netflix_Beg+20, 
                    left=Netflix_Beg,
                    color='#BDD7EE')

#Plot_Youtube = plt.barh(range(len(Youtube_Beg)),  Youtube_End-Youtube_Beg+20, 
#                    left=Youtube_Beg,
#                    color='#C5E0B4')
#                    
#Plot_Vimeo = plt.barh(range(len(Vimeo_Beg)),  Vimeo_End-Vimeo_Beg+20, 
#                    left=Vimeo_Beg,
#                    color="red",
#                    alpha=0.5)

plt.yticks(range(len(Netflix_Beg)), Netflix)
#plt.yticks(range(len(Youtube_Beg)), Ytb)
#plt.yticks(range(len(Vimeo_Beg)), Vim)

plt.tight_layout() 

#plot in tkinter window
canvas = FigureCanvasTkAgg(fig, master = root)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
canvas._tkcanvas.pack(side = tk.TOP, fill = tk.BOTH, expand = True)

#plot toolbar
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()

root.mainloop()

像这样

#data
Netflix_Beg = np.array([1,4,500,1500,2800,2960,2700, 5,2000,2000,3100,4000,4150,4150])
Netflix_End = np.array([5,1000,1000,2100,3000,3150,3150, 20,50,600,3500,3800,3960,3700])

Youtube_Beg = np.array([2,5,600,2600,3900,3970,3800, 6,3000,3000,4200,5000,5260,5260])
Youtube_End = np.array([6,2000,2000,3200,4000,4260,4260, 30,60,700,4600,4900,4070,4800])

Vimeo_Beg = np.array([0,3,400,400,1700,1850,1600,4,1000,1000,2000,3000,3040,3040])
Vimeo_End = np.array([4,500,500,1000,2000,2040,2040, 10,40,500,2400,2700,2850,2600])

Netflix = ["Netflix {}".format(i) for i in range(len(Netflix_Beg))]
Ytb = ["Youtube {}".format(i) for i in range(len(Youtube_Beg))]
Vim = ["Vimeo {}".format(i) for i in range(len(Vimeo_Beg))]



fig, ax = plt.subplots(figsize=(8,8))

Plot_Netflix = plt.barh(range(len(Netflix_Beg)),  Netflix_End-Netflix_Beg+20, 
                    left=Netflix_Beg,
                    color='#BDD7EE')

Plot_Youtube = plt.barh(len(Netflix_Beg)+np.arange(len(Youtube_Beg)),  Youtube_End-Youtube_Beg+20, 
                   left=Youtube_Beg,
                   color='#C5E0B4')

Plot_Vimeo = plt.barh(len(Netflix_Beg)+len(Youtube_Beg)+np.arange(len(Vimeo_Beg)),  Vimeo_End-Vimeo_Beg+20, 
                   left=Vimeo_Beg,
                   color="red",
                   alpha=0.5)

plt.yticks(range(len(Netflix_Beg)+len(Youtube_Beg)+len(Vimeo_Beg)), Netflix+Ytb+Vim)

plt.tight_layout() 

非常感谢!我现在有很多数据系列(行)。因此,绘图的比例非常小。你知道如何激活条形图中的滚动条吗?也许我可以为每个条指定一个固定的宽度?