In today's information explosion era, how to gather a large amount of information and a small chart, let people make judgments at a glance, and easily convey complex views will be the primary proposition for data workers. To do good things, we must first sharpen our tools. matplotlib is a powerful tool for
 python visualization. I have matplotlib in hand, drawing pictures.
 
 So let's take a look at what classic charts matplotlib has?
 
 1. Comparing single-cell processing analysis Scanpy uses matplotlib to combine the violin diagrams of multiple genes beautifully.
 
 
 2. Deeptools' classic heatmap and lineProfile are carefully crafted by the Google team using matplotlib~~
 
 
 
 
 3. GenomeTrack, the 3D genome artifact, uses matploltlib to perfectly perform joint visualization and comparison of multi-omics.
 
 
 
 In addition, we can also use matplotlib to create some charts that combine elegance and intelligence~~
 
 
 Now that we understand what matplotlib (https://matplotlib.org/gallery/index.html) can do, how do we get started with matplotlib? Then you need to start with two big pieces: one is the basic chart, and the other is the layout. Drawing is like placing a plate, the chart is like the ingredients, and the layout is like you need to figure out where to put the ingredients.
 
 
 Depends on the grammar of all the basic graphics covered by matplotlib, which requires you to go to the official website of matplotlib to see what its warehouse (https://matplotlib.org/gallery/index.html#gallery) has.
 
 The basic chart elements of matplotlib include Figure, title, legend, ticks, labels (as shown below)
 
 
 So, how do these elements correspond to the chart? Let’s take a look at the following "chestnuts"~~
 
 
 
 
 The first step is to import the matplotlib package in your python script.
 
 import matplotlib as mpl
 
 mpl.use('Agg')
 
 from matplotlib import pyplot as plt
 
 plt.style.use('ggplot')
 
 
 
 The second step is to make a simple layout~~
 
 fig=plt.figure()
 
 ax=fig.add_axes([0.1,0.1,0.8,0.8],axisbg='w')
 
 
 
 The third step is to draw a basic figure~~
 
 x = np.arange(-5, 5, 0.01)
 
 y1 = -5*x*x + x + 10
 
 y2 = 5*x*x + x
 
 ax.plot(x, y1, x, y2, color='black’)
 
 ax.fill_between(x, y1, y2, where=y2 >y1, facecolor='yellow', alpha=0.5)
 
 ax.fill_between(x, y1, y2, where=y2 <=y1,facecolor='red', alpha=0.5)
 
 ax.set_title('Fill Between')
 
 Such a simple chart is produced...
 
 
 Step 4: Save the chart (pdf and png format)
 
 fig.savefig("xxx.pdf")
 
 fig.savefig("xxx.png")
 
 
 
 
 Looking at the basic chart, let’s look at the second block of matplotlib-the basic layout
 
 First, you can use add_axes to place your chart, use left and bottom to determine the position of the lower left corner of the subgraph in the entire chart, and use the lower left point to extend to the right (width) and downward (height) to determine the chart size.
 
 
 Second: For complex layouts, gridspec is so easy to use, it can't be used any more!