25个常用Matplotlib图的Python代码,收藏收藏

本文汇总了25种使用Matplotlib进行数据可视化的常见图形,包括散点图、边缘直方图、箱线图、相关图等,适合数据分析和探索。每个图形都有详细解释和Python代码示例,帮助读者掌握数据可视化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,今天要分享给大家25个Matplotlib图的汇总,在数据分析和可视化中非常有用,文章较长,可以马起来慢慢练手。

# !pip install brewer2mpl  
import numpy as np  
import pandas as pd  
import matplotlib as mpl  
import matplotlib.pyplot as plt  
import seaborn as sns  
import warnings; warnings.filterwarnings(action='once') 
large = 22; med = 16; small = 12  
params = {'axes.titlesize': large,  
          'legend.fontsize': med,  
          'figure.figsize': (16, 10),  
          'axes.labelsize': med,  
          'axes.titlesize': med,  
          'xtick.labelsize': med,  
          'ytick.labelsize': med,  
          'figure.titlesize': large}  
plt.rcParams.update(params)  
plt.style.use('seaborn-whitegrid')  
sns.set_style("white") 
%matplotlib inline  
# Version  
print(mpl.__version__)  #> 3.0.0  
print(sns.__version__)  #> 0.9.0 

1. 散点图

Scatteplot是用于研究两个变量之间关系的经典和基本图。如果数据中有多个组,则可能需要以不同颜色可视化每个组。在Matplotlib,你可以方便地使用。

25个常用Matplotlib图的Python代码,收藏收藏

 

 

# Import dataset   
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")  
# Prepare Data   
# Create as many colors as there are unique midwest['category']  
categories = np.unique(midwest['category'])  
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]  
# Draw Plot for Each Category  
plt.figure(figsize=(16, 10), dpi= 80, facecolor='w', edgecolor='k')  
for i, category in enumerate(categories):  
    plt.scatter('area', 'poptotal',   
                data=midwest.loc[midwest.category==category, :],   
                s=20, c=colors[i], label=str(category))  
# Decorations  
plt.gca().set(xlim=(0.0, 0.1), ylim=(0, 90000),  
              xlabel='Area', ylabel='Population')  
plt.xticks(fontsize=12); plt.yticks(fontsize=12)  
plt.title("Scatterplot of Midwest Area vs Population", fontsize=22)  
plt.legend(fontsize=12)      
plt.show()      

25个常用Matplotlib图的Python代码,收藏收藏

 

2. 带边界的气泡图

有时,您希望在边界内显示一组点以强调其重要性。在此示例中,您将从应该被环绕的数据帧中获取记录,并将其传递给下面的代码中描述的记录。encircle()

from matplotlib import patches  
from scipy.spatial import ConvexHull  
import warnings; warnings.simplefilter('ignore')  
sns.set_style("white")  
# Step 1: Prepare Data  
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")  
# As many colors as there are unique midwest['category']  
categories = np.unique(midwest['category'])  
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]  
# Step 2: Draw Scatterplot with unique color for each category  
fig = plt.figure(figsize=(16, 10), dpi= 80, facecolor='w', edgecolor='k')      
for i, category in enumerate(categories):  
    plt.scatter('area', 'poptotal', data=midwest.loc[midwest.category==category, :], s='dot_size', c=colors[i], label=str(category), edgecolors='black', linewidths=.5) 
 # Step 3: Encircling  
# https://stackoverflow.com/questions/44575681/how-do-i-encircle-different-data-sets-in-scatter-plot  
def encircle(x,y, ax=None, **kw):  
    if not ax: ax=plt.gca()  
    p = np.c_[x,y]  
    hull = ConvexHull(p)  
    poly = plt.Polygon(p[hull.vertices,:], **kw)  
    ax.add_patch(poly)  
# Select data to be encircled  
midwestmidwest_encircle_data = midwest.loc[midwest.state=='IN', :]                  
 # Draw polygon surrounding vertices     
encircle(midwest_encircle_data.area, midwest_encircle_data.poptotal, ec="k", fc="gold", alpha=0.1)  
encircle(midwest_encircle_data.area, midwest_encircle_data.poptotal, ec="firebrick", fc="none", linewidth=1.5)  
# Step 4: Decorations  
plt.gca().set(xlim=(0.0, 0.1), ylim=(0, 90000),  
              xlabel='Area', ylabel='Population')  
plt.xticks(fontsize=12); plt.yticks(fontsize=12)  
plt.title("Bubble Plot with Encircling", fontsize=22)  
plt.legend(fontsize=12)      
plt.show()     

25个常用Matplotlib图的Python代码,收藏收藏

 

3. 带线性回归最佳拟合线的散点图

如果你想了解两个变量如何相互改变,那么最合适的线就是要走的路。下图显示了数据中各组之间最佳拟合线的差异。要禁用分组并仅为整个数据集绘制一条最佳拟合线,请从下面的调用中删除该参数。

# Import Data  
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")  
dfdf_select = df.loc[df.cyl.isin([4,8]), :] 
# Plot  
sns.set_style("white")  
gridobj = sns.lmplot(x="displ", y="hwy", hue="cyl", data=df_select,   
                     height=7, aspect=1.6, robust=True, palette='tab10',   
                     scatter_kws=dict(s=60, linewidths=.7, edgecolors='black'))  
# Decorations  
gridobj.set(xlim=(0.5, 7.5), ylim=(0, 50))  
plt.title("Scatterplot with line of best fit grouped by number of cylinders", fontsize=20) 

25个常用Matplotlib图的Python代码,收藏收藏

 

每个回归线都在自己的列中

或者,您可以在其自己的列中显示每个组的最佳拟合线。你可以通过在里面设置参数来实现这一点。

# Import Data  
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")  
dfdf_select = df.loc[df.cyl.isin([4,8]), :] 
# Each line in its own column  
sns.set_style("white")  
gridobj = sns.lmplot(x="displ", y="hwy",   
                     data=df_select,   
                     height=7,   
                     robust=True,   
                     palette='Set1',   
                     col="cyl",  
                     scatter_kws=dict(s=60, linewidths=.7, edgecolors='black'))  
# Decorations  
gridobj.set(xlim=(0.5, 7.5), ylim=(0, 50))  
plt.show() 

25个常用Matplotlib图的Python代码,收藏收藏

 

4. 抖动图

通常,多个数据点具有完全相同的X和Y值。结果,多个点相互绘制并隐藏。为避免这种情况,请稍微抖动点,以便您可以直观地看到它们。这很方便使用

# Import Data  
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")  
# Draw Stripplot  
fig, ax = plt.subplots(figsize=(16,10), dpi= 80) 
sns.stripplot(df.cty, df.hwy, jitter=0.25, size=8, axax=ax, linewidth=.5)  
# Decorations  
plt.title('Use jittered plots to avoid overlapping of points', fontsize=22)  
plt.show() 

25个常用Matplotlib图的Python代码,收藏收藏

 

5. 计数图

避免点重叠问题的另一个选择是增加点的大小,这取决于该点中有多少点。因此,点的大小越大,周围的点的集中度就越大。

# Import Data  
df = pd.read_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值