返回列表 发帖

Pandas+Excel+绘图库Matplotlib

列出当前环境所有已经安装的第三方库的名称和其版本号:
C:\Users\jacky\Desktop>pip3 freeze
cycler==0.11.0
et-xmlfile==1.1.0
kiwisolver==1.3.1
matplotlib==3.3.0
numpy==1.19.5
openpyxl==3.1.2
pandas==1.1.5
Pillow==8.4.0
pyparsing==3.1.1
python-dateutil==2.8.2
pytz==2023.3
six==1.16.0
xlrd==1.2.0
xlwt==1.3.0

C:\Users\jacky\Desktop>



######

#coding=utf-8
import pandas as pd

pd.set_option('display.unicode.east_asian_width',True) #解决数据输出时列名不对齐的问题

Key_index = ['李大杰','小红','Jacky','Lily','zhuohua wu']

Key_columns = ['语文成绩']

Key_data=[[110],[66],[108],[115],[106]]

df = pd.DataFrame(data=Key_data,index=Key_index,columns=Key_columns) #使用二维数组创建DataFrame数据
print(df)

## 把结果导出到指定的xlsx文件的工作表:
df.to_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1',index=True,header=True) #保留索引(行标题)、列标题

脚本运行的结果:(假如目标Excel文件存在则覆盖,不存在则自动创建)
图片1.png



######

#coding=utf-8
import pandas as pd

pd.set_option('display.unicode.east_asian_width',True)

df = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

print(df)

print("-" * 10)

## 修改一个列标题:
df.rename(columns={'Unnamed: 0':'姓名'},inplace=True)
print(df)

print("-" * 10)

## 不输出索引:
df = df.to_string(index=False)
print(df)

脚本运行的结果:
图片2.png



######(绘制线形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #正常显示负号

df = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

print(df)

## 绘制线形图:

plt.title("语文成绩的分析比较") #图形标题

x = df['Unnamed: 0']
y = df['语文成绩']

plt.plot(x,y)

plt.show() #显示图形

脚本运行的结果:
图片3.png

脚本运行后的图形效果:
图片4.png



######(绘制线形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导出的函数

        Key_columns = ['姓名','语文成绩']

        Key_data=[['李大杰',110],['小红',66],['Jacky',100],['zhuohua wu',90]]

        df_1 = pd.DataFrame(data=Key_data,columns=Key_columns) #使用二维数组创建DataFrame数据
        print(df_1)

        ## 把结果导出到指定的xlsx文件的工作表:
        df_1.to_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1',index=False,header=True) #不保留索引(行标题),但保留列标题

def func2(): #自定义导入的函数

        df_2 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_2)
       
        func3(df_2) #func3()调用了func2()的一个变量,并且func3()会自动执行
       
def func3(df_2): #绘制线形图

        plt.title("语文成绩的分析比较") #图形标题

        x = df_2['姓名']

        y = df_2['语文成绩']

        plt.plot(x,y)
       
        plt.xlabel('姓名') #显示x轴名称
        plt.ylabel('分数') #显示y轴名称
       
        plt.grid(True,linestyle=':',color='purple',alpha=0.6) #显示网格线

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()
       
        print("-" * 10)
        print("-" * 10)
       
        func2() #执行func2()

脚本运行的结果:(假如目标Excel文件存在则覆盖,不存在则自动创建)
图片5.png

脚本运行后的图形效果:
图片6.png



######(绘制线形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导出的函数

        Key_columns = ['姓名','年龄','语文成绩','数学成绩']

        Key_data=[['李大杰',18,60,110],['小红',19,77,66],['Jacky',20,80,100],['zhuohua',20,70,115]]

        df_1 = pd.DataFrame(data=Key_data,columns=Key_columns) #使用二维数组创建DataFrame数据
        print(df_1)

        ## 把结果导出到指定的xls文件:
        df_1.to_excel('D:/mybook-2.xls',sheet_name='工作表-1',index=False,header=True) #不保留索引(行标题),但保留列标题

def func2(): #自定义导入的函数

        df_2 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_2)
       
        func3(df_2) #func3()调用了func2()的一个变量,并且func3()会自动执行
       
def func3(df_2): #绘制线形图

        plt.title("语文成绩、数学成绩的分析比较") #图形标题

        x = df_2['姓名'] #x轴的点的值

        y1 = df_2['语文成绩'] #第一条数据线的y轴的点的值(linestyle='--' :双划线)
        plt.plot(x,y1,label='语文成绩',color='red',linewidth=1.0,linestyle='--')

        y2 = df_2['数学成绩'] #第二条数据线的y轴的点的值(linestyle='-' :实线)
        plt.plot(x,y2,label='数学成绩',color='green',linewidth=1.0,linestyle='-')

        plt.legend() #显示图例(label)

        plt.xlabel('姓名') #显示x轴名称
        plt.ylabel('分数') #显示y轴名称

        plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线
       
        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()
       
        print("-" * 10)
        print("-" * 10)
       
        func2() #执行func2()

脚本运行的结果:(假如目标Excel文件存在则覆盖,不存在则自动创建)
图片7.png

脚本运行后的图形效果:
图片8.png





######(绘制竖向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制竖向条形图

        plt.title("语文成绩的分析比较",fontsize=18,loc='right') #图形标题

        plt.xlabel('姓名') #x轴名称
        plt.ylabel('分数') #y轴名称

        x = df_1['姓名']

        y = df_1['语文成绩']

        Color=['blue'] #条形的填充颜色

        plt.bar(x,y,color=Color)

        plt.grid(True,linestyle=':',color='purple',alpha=0.6) #显示网格线

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片9.png



######(绘制竖向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制竖向条形图

        plt.title("语文成绩、数学成绩的分析比较",fontsize=18,loc='center') #图形标题
       
        plt.xlabel('姓名') #x轴名称
        plt.ylabel('分数') #y轴名称
       
        N = len(df_1) #获取DataFrame对象的总行数
       
        X = np.arange(N)
       
        Labels = df_1['姓名'] #x轴的点的值
       
        y1 = df_1['语文成绩']
        y2 = df_1['数学成绩']

        bar_width = 0.3 #条形的宽度

        plt.bar(X, y1, bar_width,label='语文成绩',color='red')
        plt.bar(X + bar_width, y2, bar_width, label='数学成绩',tick_label=Labels,color='blue')
       
        plt.legend() #显示图例(label)

        plt.grid(axis='y',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的y轴

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片10.png



######(绘制竖向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制竖向条形图

        plt.title("语文成绩、数学成绩的分析比较",fontsize=18) #图形标题

        plt.xlabel('姓名') #x轴名称
        plt.ylabel('分数') #y轴名称
       
        N = len(df_1) #获取DataFrame对象的总行数
       
        X = np.arange(N)
       
        Labels = df_1['姓名'] #x轴的点的值
       
        y1 = df_1['语文成绩']
        y2 = df_1['数学成绩']

        bar_width = 0.4 #条形的宽度

        plt.bar(X, y1, bar_width,label='语文成绩',color='red')
        plt.bar(X + bar_width, y2, bar_width, label='数学成绩',tick_label=Labels,color='blue')
       
        #设置每个柱子上的文本标签:(语文成绩的y轴的点的值)
        for a,b in zip(X,y1):
                plt.text(a,b,b,ha='center',va='bottom',fontsize=9,color='blue',alpha=0.9)

        #设置每个柱子上的文本标签:(数学成绩的y轴的点的值)
        for a,b in zip(X,y2):
                plt.text(a+bar_width,b,b,ha='center',va='bottom',fontsize=9,color='black',alpha=0.9)
       
        plt.legend() #显示图例(label)

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片11.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制横向条形图

        plt.figure(figsize=(10,8)) #自定义窗体的宽和高

        plt.title("语文成绩的分析比较",fontsize=18,loc='left') #图形标题

        plt.xlabel('分数') #x轴名称
        plt.ylabel('姓名') #y轴名称

        x = df_1['语文成绩']

        y = df_1['姓名']

        Color=['yellow'] #条形的填充颜色

        # height 条形的宽度, width 条形的长度
        plt.bar(x=0,bottom=y,height=0.6,width=x,orientation="horizontal",color=Color)

        #设置每个柱子上的文本标签:(x轴的点的值)
        for a,b in zip(x,y):
                plt.text(a,b,a,ha='center',va='bottom',fontsize=12,color='blue',alpha=0.9)
               
        plt.grid(axis='x',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的x轴

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片12.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制横向条形图

        df_1 = df_1.set_index(['姓名']) #设置指定列的数据为索引

        Data={'语文成绩':df_1['语文成绩']}
       
        Result_1 = pd.DataFrame(Data,index=df_1.index) # df_1.index 为DataFrame对象的所有索引
       
        Result_1.index.name = '姓名' #y轴名称
        Result_1.columns.name = '学科成绩:' #图例的标题

        Result_1.plot.barh(figsize=(10,8)) # figsize=(10,8) :自定义窗体的宽和高
       
        plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题
       
        plt.grid(axis='x',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的x轴

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片13.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制横向条形图

        df_1 = df_1.set_index(['姓名']) #设置指定列的数据为索引

        Data={'语文成绩':df_1['语文成绩'],'数学成绩':df_1['数学成绩']}
       
        Result_1 = pd.DataFrame(Data,index=df_1.index) # df_1.index 为DataFrame对象的所有索引
       
        Result_1.index.name = '姓名' #y轴名称
        Result_1.columns.name = '学科成绩:' #图例的标题

        Result_1.plot.barh(figsize=(10,8)) # figsize=(10,8) :自定义窗体的宽和高
       
        plt.title("语文成绩、数学成绩的分析比较",fontsize=20) #图形标题

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行后的图形效果:
图片14.png





######(绘制饼形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        print("-" * 10)
       
        df_2 = df_1.loc[(df_1['姓名']=='小红')]
       
        print(df_2)
       
        func2(df_2) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_2): #绘制饼形图

        plt.title("小红的语文成绩、数学成绩的分析比较") #图形标题
       
        Result_1 = df_2.iloc[0,2] #获取第1行第3列的值
        Result_2 = df_2.iloc[0,3] #获取第1行第4列的值
       
        Labels = ['语文','数学']
        Data = [Result_1,Result_2]

        Colors=['red','gold']

        plt.pie(Data,labels = Labels,colors = Colors,labeldistance = 1.02,autopct = '%.1f%%',#百分比保留一位小数
        startangle = 90,radius = 0.5,center = (0.2,0.2),textprops = {'fontsize':9,'color':'k'},pctdistance = 0.6)

        plt.legend(title='成绩的图例:',frameon=True) #显示图例(自定义图例标题,并且保留图例边框)

        plt.axis('equal')

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行的结果:
图片15.png

脚本运行后的图形效果:
图片16.png



######(绘制饼形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        print("-" * 10)
       
        df_2 = df_1.loc[(df_1['姓名']=='Jacky')]
       
        print(df_2)
       
        func2(df_2) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_2): #绘制饼形图

        plt.figure(figsize=(10,8)) #自定义窗体的宽和高

        plt.title("Jacky的语文成绩、数学成绩的分析比较") #图形标题
       
        Result_1 = df_2.iloc[0,2] #获取第1行第3列的值
        Result_2 = df_2.iloc[0,3] #获取第1行第4列的值
       
        Labels = ['语文','数学']
        Data = [Result_1,Result_2]

        Colors=['red','gold']

        plt.pie(Data,labels = Labels,colors = Colors,labeldistance = 1.02,autopct = '%.2f%%',#百分比保留两位小数
        startangle = 90,radius = 0.5,center = (0.2,0.2),textprops = {'fontsize':9,'color':'k'},
        wedgeprops={'width':0.3,'edgecolor':'k'}, #绘制外环
        pctdistance = 0.6)

        plt.legend(title='成绩的图例:',loc='lower left',frameon=False) #显示图例(自定义图例标题、位置,并且不保留图例边框)

        plt.axis('equal')

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行的结果:
图片17.png

脚本运行后的图形效果:
图片18.png





######(绘制面积图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制面积图

        plt.title("语文成绩的分析比较",fontsize=18) #图形标题
       
        x = df_1['姓名']
        y1 = df_1['语文成绩']

        plt.stackplot(x,y1,colors=['green'])
        plt.legend(['语文成绩'],loc='upper right',frameon=False) #显示图例(自定义图例的内容、位置,并且不保留图例边框)

        plt.xlabel('姓名') #显示x轴名称
        plt.ylabel('分数') #显示y轴名称

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行的结果:
图片19.png

脚本运行后的图形效果:
图片20.png



######(绘制面积图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制面积图

        plt.figure(figsize=(10,8)) #自定义窗体的宽和高

        plt.title("语文成绩的分析比较",fontsize=18) #图形标题
       
        x = df_1['姓名']
        y1 = df_1['语文成绩']

        plt.stackplot(x,y1,colors=['green'])
        plt.legend(['语文成绩'],title='学科成绩:',loc='upper left',frameon=True) #显示图例(自定义图例的内容、标题、位置,并且保留图例边框)

        plt.xlabel('姓名') #显示x轴名称
        plt.ylabel('分数') #显示y轴名称

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行的结果:
图片21.png

脚本运行后的图形效果:
图片22.png



######(绘制面积图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数

        df_1 = pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
        func2(df_1) #func2()调用了func1()的一个变量,并且func2()会自动执行
       
def func2(df_1): #绘制面积图

        plt.figure(figsize=(10,8)) #自定义窗体的宽和高
       
        plt.title("语文成绩、数学成绩的分析比较",fontsize=18) #图形标题

        x = df_1['姓名'] #x轴的点的值
        y1 = df_1['语文成绩']
        y2 = df_1['数学成绩']

        plt.stackplot(x,y1,y2,colors=['green','red'])

        plt.legend(['语文成绩','数学成绩'],title='学科成绩:',loc='upper left',frameon=False) #显示图例(自定义图例的内容、标题、位置,并且不保留图例边框)

        plt.xlabel('姓名') #显示x轴名称
        plt.ylabel('分数') #显示y轴名称

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()

脚本运行的结果:
图片23.png

脚本运行后的图形效果:(可以看到y轴上的各个数据值会自动进行叠加)
图片24.png





######(绘制散点图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数
       
        global df_1 #使用关键字global,把局部变量变为全局变量
       
        df_1 = pd.read_excel('D:/mybook_1.xlsx',sheet_name='Sheet_1') #导入指定的xlsx文件的工作表

        print(df_1)
       
def func2(): #绘制散点图

        plt.figure(figsize=(10,8),facecolor='white') #自定义窗体的宽和高、背景颜色

        plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题

        x = df_1['姓名']
        y = df_1['语文成绩']

        plt.plot(x,y,'ro',color='blue')

        plt.grid(True,linestyle=':',color='purple',alpha=0.6) #显示网格线

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()
       
        print("-" * 10)
        print("-" * 10)
       
        func2() #执行func2()

脚本运行的结果:
图片25.png

脚本运行后的图形效果:
图片26.png



######(绘制散点图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def func1(): #自定义导入的函数
       
        global df_1 #使用关键字global,把局部变量变为全局变量
       
        df_1 =  pd.read_excel('D:/mybook-2.xls',sheet_name='工作表-1') #导入指定的xls文件的工作表

        print(df_1)
       
def func2(): #绘制散点图

        plt.figure(figsize=(10,8),facecolor='yellow') #自定义窗体的宽和高、背景颜色

        plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题

        x = df_1['姓名']
        y = df_1['语文成绩']

        plt.scatter(x,y,color='red')

        plt.grid(True,linestyle=':',color='purple',alpha=0.6) #显示网格线

        plt.show()
       
if __name__ == '__main__':

        func1() #执行func1()
       
        print("-" * 10)
        print("-" * 10)
       
        func2() #执行func2()

脚本运行的结果:
图片27.png

脚本运行后的图形效果:
图片28.png










######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

## 绘制线形图:
x = [1,2,3,4,5,6]
y = [2,4,3,5,8,2]

plt.plot(x,y)

plt.grid(True,linestyle=':',color='gold',alpha=0.6) #显示网格线
       
plt.show() #显示图形

脚本运行后的图形效果:
图片29.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = [1,2,3,4,5,6]
y = [2,4,3,5,8,2]

plt.plot(x,y,color='red')
       
plt.show()

脚本运行后的图形效果:
图片30.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = [1,2,3,4,5,6]
y = [2,4,3,5,8,2]

plt.plot(x,y,color='red',linewidth=1.0,marker='o',linestyle=':') #marker='o':实心圆标记
       
plt.show()

脚本运行后的图形效果:
图片31.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = [1,2,3,4,5,6]
y = [2,4,3,5,8,2]

plt.plot(x,y,color='red',linewidth=1.0,marker='o',mfc='w',linestyle=':') #marker='o' + mfc='w':空心圆标记
       
plt.show()

脚本运行后的图形效果:
图片32.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = [1,2,3,4,5,6]
y = [2,4,3,5,8,2]

plt.plot(x,y,label='语文成绩',color='brown',linewidth=1.0,marker='+',linestyle=':') #marker='+':加号标记

plt.legend() #显示图例(label)
       
plt.show()

脚本运行后的图形效果:
图片33.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高
plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题

x = [1,2,3,4,5,6]
y = [2,4,3,5.5,8.45,2]

## 设置每个数据点上的文本标签:(y轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,b,ha='center',va='bottom',fontsize=9)

plt.plot(x,y,label='语文成绩',color='brown',linewidth=1.0,marker='^',linestyle=':') #marker='^':上三角标记

plt.legend() #显示图例(label)
       
plt.show()

脚本运行后的图形效果:
图片34.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6),facecolor='yellow') #自定义窗体的宽和高、背景颜色
plt.title("语文成绩的分析比较",fontsize=18) #图形标题

x = [1,2,3,4,5,6]
y = [2,4,3,5.5,8.4,2]

## 设置每个数据点上的文本标签:(y轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,'%.0f'%b,ha='center',va='bottom',fontsize=9) #数值不保留小数

plt.plot(x,y,label='语文成绩',color='brown',linewidth=1.0,marker='v',linestyle=':') #marker='v':下三角标记

plt.legend(loc='upper left') #显示图例(自定义图例的位置)
       
plt.show()

脚本运行后的图形效果:
图片35.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高
plt.title("语文成绩、数学成绩的分析比较",fontsize=18) #图形标题

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y1 = [2,4,3,5,8,2] #第一条数据线的y轴的点的值(linestyle=':' :虚线)
plt.plot(x,y1,label='语文成绩',color='red',linewidth=1.0,linestyle=':')

y2 = [2,4,9,5,8,4] #第二条数据线的y轴的点的值(linestyle='-.' :点划线)
plt.plot(x,y2,label='数学成绩',color='green',linewidth=1.0,linestyle='-.')

plt.legend() #显示图例(label)

plt.xlabel('姓名') #显示x轴名称
plt.ylabel('分数') #显示y轴名称

plt.grid(axis='x',linestyle=':',color='brown',alpha=0.6) #显示网格线,但不显示网格线的x轴
       
plt.show()

脚本运行后的图形效果:
图片36.png



######(绘制线形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高
plt.title("语文成绩、数学成绩的分析比较",fontsize=20) #图形标题

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y1 = [2,4,3,5,8,2.5] #第一条数据线的y轴的点的值(linestyle=':' :虚线)

## 设置每个数据点上的文本标签:(第一条数据线的y轴的点的值)
for a,b in zip(x,y1):
        plt.text(a,b,'%.1f'%b,ha='center',va='bottom',fontsize=9) #数值保留一位小数

plt.plot(x,y1,label='语文成绩',color='red',linewidth=1.0,linestyle=':')

y2 = [2,4,9,5,8,4.45] #第二条数据线的y轴的点的值(linestyle='-.' :点划线)

## 设置每个数据点上的文本标签:(第二条数据线的y轴的点的值)
for a,b in zip(x,y2):
        plt.text(a,b,'%.1f'%b,ha='center',va='bottom',fontsize=9)

plt.plot(x,y2,label='数学成绩',color='green',linewidth=1.0,linestyle='-.')

plt.legend() #显示图例(label)

plt.xlabel('姓名') #显示x轴名称
plt.ylabel('分数') #显示y轴名称

plt.grid(axis='y',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的y轴
       
plt.show()

脚本运行后的图形效果:
图片37.png





######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [20,40,30,50,80,20] #y轴的点的值

plt.bar(x,y)

plt.show()

脚本运行后的图形效果:
图片38.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [20,40,30,50,80,25] #y轴的点的值

plt.bar(x,y,label='语文成绩',color='red')

plt.legend() #显示图例(label)

plt.show()

脚本运行后的图形效果:
图片39.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18,loc='left') #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [20,40,30,50,80,25] #y轴的点的值

plt.bar(x,y,label='语文成绩',color='red',width=0.4) # width :条形的宽度

plt.legend() #显示图例(label)

plt.grid(axis='y',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的y轴

plt.show()

脚本运行后的图形效果:
图片40.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18,loc='right') #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [20,40,30,50,80.554,25.556] #y轴的点的值

plt.bar(x,y,color='red',width=0.8) # width :条形的宽度

#设置每个柱子上的文本标签:(y轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,b,ha='center',va='bottom',fontsize=9,color='blue',alpha=0.9)

plt.show()

脚本运行后的图形效果:
图片41.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=20,loc='right') #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [20,40,30,50,80.554,25.556] #y轴的点的值

plt.bar(x,y,color='red',width=0.8) # width :条形的宽度

#设置每个柱子上的文本标签:(y轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,'%.2f'%b,ha='center',va='bottom',fontsize=9,color='black',alpha=0.9)#数值保留两位小数

plt.show()

脚本运行后的图形效果:
图片42.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

x = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值

y = [2000,4000,3000,5020,8000.5,255.5] #y轴的点的值

plt.bar(x,y,label='语文成绩',color='red',width=0.8)

plt.legend() #显示图例(label)

#设置每个柱子上的文本标签;使用“format(b,',')”时,y轴的点的值会使用千位分隔符:
for a,b in zip(x,y):
        plt.text(a,b,format(b,','),ha='center',va='bottom',fontsize=10,color='black',alpha=0.9)

plt.show()

脚本运行后的图形效果:
图片43.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩、数学成绩的分析比较") #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

Labels = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #x轴的点的值
N = 6
X = np.arange(N)

y1 = [20,40,30,55,80,25.5] #语文成绩的y轴的点的值
y2 = [30,40,30,50,80,75.5] #数学成绩的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, y1, bar_width,label='语文成绩',color='red')
plt.bar(X + bar_width, y2, bar_width, label='数学成绩',tick_label=Labels,color='blue')

plt.legend() #显示图例(label)

plt.show()

脚本运行后的图形效果:
图片44.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩、数学成绩、物理成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

Labels = ['李大杰','Jacky','Lily','Happy'] #x轴的点的值
N = 4
X = np.arange(N)

y1 = [20,40,30,55] #语文成绩的y轴的点的值
y2 = [30,40,30,50] #数学成绩的y轴的点的值
y3 = [40,45,36,25] #物理成绩的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, y1, bar_width,label='语文成绩',color='red')
plt.bar(X + bar_width, y2, bar_width, label='数学成绩',tick_label=Labels,color='blue')
plt.bar(X + bar_width + bar_width, y3, bar_width, label='物理成绩',tick_label=Labels,color='yellow')

plt.legend() #显示图例(label)

plt.grid(axis='y',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的y轴

plt.show()

脚本运行后的图形效果:
图片45.png



######(绘制竖向条形图)

#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩、数学成绩、物理成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('姓名') #x轴名称
plt.ylabel('分数') #y轴名称

Labels = ['李大杰','Jacky','Lily','Happy'] #x轴的点的值
N = len(Labels)
X = np.arange(N)

y1 = [20,40,30,55] #语文成绩的y轴的点的值
y2 = [30,40,30,50] #数学成绩的y轴的点的值
y3 = [40,45,36,25] #物理成绩的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, y1, bar_width,label='语文成绩',color='red')
plt.bar(X + bar_width, y2, bar_width, label='数学成绩',tick_label=Labels,color='blue')
plt.bar(X + bar_width + bar_width, y3, bar_width, label='物理成绩',tick_label=Labels,color='yellow')

#设置每个柱子上的文本标签:(语文成绩的y轴的点的值)
for a,b in zip(X,y1):
        plt.text(a,b,b,ha='center',va='bottom',fontsize=9,color='blue',alpha=0.9)

#设置每个柱子上的文本标签:(数学成绩的y轴的点的值)
for a,b in zip(X,y2):
        plt.text(a+bar_width,b,b,ha='center',va='bottom',fontsize=9,color='black',alpha=0.9)
       
#设置每个柱子上的文本标签:(物理成绩的y轴的点的值)
for a,b in zip(X,y3):
        plt.text(a+bar_width*2,b,b,ha='center',va='bottom',fontsize=9,color='blue',alpha=0.9)

plt.legend(loc='upper left') #显示图例(自定义图例的位置)

plt.grid(axis='y',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的y轴

plt.show()

脚本运行后的图形效果:
图片46.png



######(绘制横向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18,loc='center') #图形标题

plt.xlabel('分数') #x轴名称
plt.ylabel('姓名') #y轴名称

x = [20,40,30,50,80,20.5] #x轴的点的值

y = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #y轴的点的值

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.4,width=x,orientation="horizontal",color='red')

plt.show()

脚本运行后的图形效果:
图片47.png



######(绘制横向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('分数') #x轴名称
plt.ylabel('姓名') #y轴名称

x = [20,40,30,50,80,20.5] #x轴的点的值

y = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #y轴的点的值

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.6,width=x,label='语文成绩',orientation="horizontal",color='red')

plt.legend() #显示图例(label)

plt.grid(axis='x',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的x轴

plt.show()

脚本运行后的图形效果:
图片48.png



######(绘制横向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('分数') #x轴名称
plt.ylabel('姓名') #y轴名称

x = [20,40,30,50.54,80.55,20.5] #x轴的点的值

y = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #y轴的点的值

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.6,width=x,orientation="horizontal",color='yellow')

#设置每个柱子上的文本标签:(x轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,a,ha='center',va='bottom',fontsize=12,color='blue',alpha=0.9)

plt.show()

脚本运行后的图形效果:
图片49.png



######(绘制横向条形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("语文成绩的分析比较",fontsize=18) #图形标题

plt.xlabel('分数') #x轴名称
plt.ylabel('姓名') #y轴名称

x = [20,40,30,50.54,80.55,20.5] #x轴的点的值

y = ['李大杰','Jacky','Lily','Happy','Joe','Funny'] #y轴的点的值

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.6,width=x,orientation="horizontal",color='yellow')

#设置每个柱子上的文本标签:(x轴的点的值)
for a,b in zip(x,y):
        plt.text(a,b,'%.1f'%a,ha='center',va='bottom',fontsize=12,color='black',alpha=0.9) #数值保留一位小数

plt.show()

脚本运行后的图形效果:
图片50.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

Data={'语文成绩':[20,30,80]}

Result_1 = pd.DataFrame(Data,index=['李大杰','Jacky','Lily'])

Result_1.index.name = '姓名' #y轴名称
Result_1.columns.name = '学科成绩' #图例的标题

Result_1.plot.barh()

plt.title("语文成绩的分析比较",fontsize=18,loc='left') #图形标题

plt.grid(axis='x',linestyle=':',color='purple',alpha=0.6) #显示网格线,但不显示网格线的x轴

plt.show()

脚本运行后的图形效果:
图片51.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

Data={'语文成绩':[20,30,80],'数学成绩':[40,60,70]}

Result_1 = pd.DataFrame(Data,index=['李大杰','Jacky','Lily'])

Result_1.index.name = '姓名' #y轴名称
Result_1.columns.name = '学科成绩:' #图例的标题

Result_1.plot.barh()

plt.title("语文成绩、数学成绩的分析比较",fontsize=18,loc='right') #图形标题

plt.show()

脚本运行后的图形效果:
图片52.png



######(绘制横向条形图)

#coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width',True)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

Data={'语文成绩':[20,30,80],'数学成绩':[40,60,70],'物理成绩':[30,90,70]}

Result_1 = pd.DataFrame(Data,index=['李大杰','Jacky','Lily'])

Result_1.index.name = '姓名' #y轴名称
Result_1.columns.name = '学科成绩:' #图例的标题

Result_1.plot.barh(figsize=(8,6)) # figsize=(8,6) :自定义窗体的宽和高

plt.title("语文成绩、数学成绩、物理成绩的分析比较",fontsize=18) #图形标题

plt.show()

脚本运行后的图形效果:
图片53.png





######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高
plt.title("苹果一周销量情况(百分比)") #图形标题

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

Colors=['red','yellow','slateblue','green','magenta','cyan','darkorange']

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02, #设置各扇形标签(图例)与圆心的距离
autopct = '%.1f%%', #百分比保留一位小数
startangle = 90, #设置饼图的初始角度
radius = 0.5, #设置饼图的半径
center = (0.2,0.2), #设置饼图的原点
textprops = {'fontsize':9,'color':'k'}, #设置文本标签的属性值
pctdistance = 0.6) #设置百分比标签与圆心的距离

plt.axis('equal') #设置x、y轴的尺寸相等,使饼形图为正圆形

plt.show()

脚本运行后的图形效果:
图片54.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6),facecolor='white') #自定义窗体的宽和高、背景颜色

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

Colors=['red','yellow','slateblue','green','lawngreen','pink','gold']

Explode = (0.1,0,0.1,0,0,0,0) #第一、三个标签分离(饼图分离)

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02,
autopct = '%.2f%%', #百分比保留两位小数
startangle = 90,radius = 0.5,center = (0.2,0.2),
textprops = {'fontsize':9,'color':'k'},
explode = Explode, #饼图分离
pctdistance = 0.6)

plt.legend() #显示图例(label)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片55.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

Colors=['red','yellow','slateblue','green','lawngreen','pink','gold']

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02,
autopct = '%.3f%%', #百分比保留三位小数
startangle = 90,radius = 0.5,center = (0.2,0.2),
textprops = {'fontsize':9,'color':'k'},
shadow = True, #饼图阴影
pctdistance = 0.6)

plt.legend(title='星期数:',frameon=True) #显示图例(自定义图例标题,并且保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片56.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

Colors=['red','yellow','slateblue','green','lawngreen','pink','gold']

Explode = (0,0.1,0,0,0,0,0) #第二个标签分离(饼图分离)

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02,
autopct = '%.0f%%', #百分比不保留小数
startangle = 90,radius = 0.5,center = (0.2,0.2),
textprops = {'fontsize':9,'color':'k'},
explode = Explode, #饼图分离
shadow = True, #饼图阴影
pctdistance = 0.6)

plt.legend(title='星期数',loc='lower right',frameon=False) #显示图例(自定义图例标题、位置,并且不保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片57.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

Colors=['red','yellow','slateblue','green','lawngreen','pink','gold']

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02,
autopct = '%.1f%%', #百分比保留一位小数
startangle = 90,radius = 0.5,center = (0.2,0.2),
textprops = {'fontsize':9,'color':'k'},

wedgeprops={'width':0.3,'edgecolor':'k'}, #绘制外环

pctdistance = 0.6)

plt.legend(title='星期数:',loc='lower left',frameon=True) #显示图例(自定义图例标题、位置,并且保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片58.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

Colors=['red','yellow','slateblue','green','lawngreen','pink','gold']

Explode = (0,0.1,0,0.1,0,0,0) #第二、四个标签分离(饼图分离)

plt.pie(Data, #绘图数据

labels = Labels, #设置区域标签
colors = Colors, #设置饼图的自定义填充色
labeldistance = 1.02,
autopct = '%.2f%%', #百分比保留两位小数
startangle = 90,radius = 0.5,center = (0.2,0.2),
textprops = {'fontsize':9,'color':'k'},

explode = Explode, #饼图分离
wedgeprops={'width':0.3,'edgecolor':'k'}, #绘制外环

pctdistance = 0.6)

plt.legend(title='星期数:',loc='lower left',frameon=False) #显示图例(自定义图例标题、位置,并且不保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片59.png



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("苹果一周销量情况(百分比)",loc='left') #图形标题

Labels_1 = ['Mon','Tues','Wed','Thur']
Labels_2 = ['Fri','Sat','Sun']

Data_1 = [18,20.2,5.6,15.3]
Data_2 = [20,15,15]

Colors_1 = ['red','yellow','slateblue','green']
Colors_2 = ['lawngreen','pink','gold']

legend_text = Labels_1 + Labels_2

#绘制外环:
plt.pie(Data_1,labels=Labels_1,autopct='%.1f%%',radius=1,pctdistance=0.85,colors=Colors_1
,wedgeprops=dict(linewidth=2,width=0.3,edgecolor='w'))

#绘制内环:
plt.pie(Data_2,autopct='%.2f%%',radius=0.7,pctdistance=0.7,colors=Colors_2,
wedgeprops=dict(linewidth=2,width=0.4,edgecolor='w'))

plt.legend(legend_text,title='星期数:',frameon=True) #显示图例(自定义图例的内容、标题,并且保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片60.png
注释:
外环的百分比和内环的是分开计算的。



######(绘制饼形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,8)) #自定义窗体的宽和高

plt.title("苹果一周销量情况(百分比)",loc='right') #图形标题

Labels_1 = ['Mon','Tues','Wed','Thur']
Labels_2 = ['Fri','Sat','Sun']

Data_1 = [18,20.2,5.6,15.3]
Data_2 = [20,15,15]

Colors_1 = ['red','yellow','slateblue','green']
Colors_2 = ['lawngreen','pink','gold']

legend_text = ['Monday','Tues','Wed','Thur','Fri','Sat','Sun']

#绘制外环:
plt.pie(Data_1,labels=Labels_1,autopct='%.1f%%',radius=1,pctdistance=0.85,colors=Colors_1
,wedgeprops=dict(linewidth=2,width=0.3,edgecolor='w'))

#绘制内环:
plt.pie(Data_2,autopct='%.2f%%',radius=0.7,pctdistance=0.7,colors=Colors_2,
wedgeprops=dict(linewidth=2,width=0.4,edgecolor='w'))

plt.legend(legend_text,title='星期数',loc='upper left',frameon=False) #显示图例(自定义图例的内容、标题、位置,并且不保留图例边框)

plt.axis('equal')

plt.show()

脚本运行后的图形效果:
图片61.png
注释:
外环的百分比和内环的是分开计算的。





######(绘制面积图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("各位同学的语文成绩的分析比较",fontsize=20,loc='center') #图形标题

x = ['李大杰','Jacky','Lily','Happy']
y1 = [60,90,50.5,80]

plt.stackplot(x,y1,colors=['green'])

plt.legend(['语文成绩']) #显示图例(自定义图例的内容)

plt.xlabel('姓名') #显示x轴名称
plt.ylabel('分数') #显示y轴名称

plt.show()

脚本运行后的图形效果:
图片62.png



######(绘制面积图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高
plt.title("各位同学的多门学科的成绩的比较",fontsize=20,loc='left') #图形标题

x = ['李大杰','Jacky','Lily','Happy']
y1 = [6,9,5,8]
y2 = [3,2,5,4]

plt.stackplot(x,y1,y2,colors=['green','red'])

plt.legend(['语文成绩','数学成绩'],title='学科成绩:',loc='upper left',frameon=True) #显示图例(自定义图例的内容、标题、位置,并且保留图例边框)

plt.xlabel('姓名') #显示x轴名称
plt.ylabel('分数') #显示y轴名称

plt.show()

脚本运行后的图形效果:(可以看到y轴上的各个数据值会自动进行叠加)
图片63.png



######(绘制面积图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6)) #自定义窗体的宽和高
plt.title("各位同学的多门学科的成绩的比较",fontsize=18,loc='right') #图形标题

x = ['李大杰','Jacky','Lily','Happy']
y1 = [6,9,5,8]
y2 = [3,2,5,4]
y3 = [1,3,2,3]

plt.stackplot(x,y1,y2,y3,colors=['green','red','pink'])

plt.legend(['语文成绩','数学成绩','物理成绩'],loc='upper left') #显示图例(自定义图例的内容、位置)

plt.xlabel('姓名') #显示x轴名称
plt.ylabel('分数') #显示y轴名称

plt.show()

脚本运行后的图形效果:(可以看到y轴上的各个数据值会自动进行叠加)
图片64.png





######(绘制散点图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6),facecolor='white') #自定义窗体的宽和高、背景颜色

plt.title("苹果一周销量情况(公斤)") #图形标题

x = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun']
y = [2,4,3,5,8,2,6]

plt.plot(x,y,'ro',color='blue')

plt.grid(True,linestyle=':',color='purple',alpha=0.6) #显示网格线

plt.xlabel('星期数') #显示x轴名称
plt.ylabel('销量') #显示y轴名称

plt.show()

脚本运行后的图形效果:
图片65.png



######(绘制散点图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,6),facecolor='yellow') #自定义窗体的宽和高、背景颜色

plt.title("苹果一周销量情况(公斤)") #图形标题

x = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun']
y = [2,4,3,5,8,2,6]

plt.scatter(x,y,color='red')

plt.grid(True,linestyle=':',color='brown',alpha=0.6) #显示网格线

plt.xlabel('星期数') #显示x轴名称
plt.ylabel('销量') #显示y轴名称

plt.show()

脚本运行后的图形效果:
图片66.png





######(绘制箱形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = [1,2,3,5,7,8]

plt.boxplot(x)

plt.show()

脚本运行后的图形效果:(箱形图会把数据分成四部分)
图片67.png
注释:
下四分位数为数据的25%分位点所对应的值(Q1);
中位数为数据的50%分位点所对应的值(Q2);
上四分位数为数据的75%分位点所对应的值(Q3);
上限的计算公式为:Q3+1.5(Q3-Q1)
下限的计算公式为:Q1-1.5(Q3-Q1)



######(绘制箱形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("语文成绩的分析比较") #图形标题

x = [60,20,53,60,70.5,99]

plt.boxplot(x,labels=['语文成绩'])

plt.show()

脚本运行后的图形效果:
图片68.png
注释:
当数据值大于箱形图的上限或者小于箱线图的下限时,都被判定为异常值。



######(绘制箱形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("数学成绩、语文成绩的分析比较") #图形标题

x1 = [1,2,3,5,7,8]

x2 = [60,20,53,60,70.5,99]

plt.boxplot([x1,x2],labels=['数学成绩','语文成绩'])

plt.show()

脚本运行后的图形效果:
图片69.png



######(绘制箱形图)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("数学成绩、语文成绩、物理成绩的分析比较") #图形标题

x1 = [1,2,3,5,7,8]

x2 = [60,20,53,60,70.5,99]

x3 = [60,20,53,60,70.5,80]

plt.boxplot([x1,x2,x3],labels=['数学成绩','语文成绩','物理成绩'])

plt.show()

脚本运行后的图形效果:
图片70.png





######(在一个窗体中绘制多个子图表)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(14,12),facecolor='pink') #自定义窗体的宽和高、背景颜色

#第一个图形:(绘制线形图)
plt.subplot(2,2,1) #2行2列中的第1个图形
plt.title("苹果(Apple)的销量情况") #第一个图形的标题

x1 = ["一月份","二月份","三月份","四月份"]
y1 = [3,8,9,5]
plt.plot(x1,y1,label='Apple',color='red',linewidth=1.0,marker='o',linestyle='--')
plt.xlabel('月份')
plt.ylabel('销量(斤)')
plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线

#第二个图形:(绘制竖向条形图)
plt.subplot(2,2,2) #2行2列中的第2个图形
plt.title("语文成绩的分析比较",fontsize=18,loc='center') #第二个图形的标题

x2 = ['李大杰','Jacky','Lily','Happy','Joe']
y2 = [20,40,30,55,80]
plt.xlabel('姓名')
plt.ylabel('分数')
plt.bar(x2,y2)

#第三个图形:(绘制饼形图)
plt.subplot(2,2,3) #2行2列中的第3个图形
plt.title("苹果一周销量情况(百分比)") #第三个图形的标题

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值
colors=['red','yellow','slateblue','green','magenta','cyan','darkorange']
plt.pie(Data,labels = Labels,colors = colors,labeldistance = 1.02,autopct = '%.1f%%',
startangle = 90,radius = 0.5,center = (0.2,0.2),textprops = {'fontsize':9,'color':'k'},pctdistance = 0.6)
plt.legend(loc='lower left') #第三个图形显示图例(自定义图例的位置(左下方))
plt.axis('equal')

plt.show() #显示图形

脚本运行后的图形效果:
图片71.png



######(在一个窗体中绘制多个子图表)

#coding=utf-8
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(14,12),facecolor='gold') #自定义窗体的宽和高、背景颜色

#第一个图形:(绘制线形图)
plt.subplot(2,2,1) #2行2列中的第1个图形
plt.title("苹果(Apple)的销量情况") #第一个图形的标题

x1 = ["一月份","二月份","三月份","四月份"]
y1 = [3,8,9,5]
plt.plot(x1,y1,label='Apple',color='red',linewidth=1.0,marker='o',mfc='w',linestyle='-.')
plt.xlabel('月份')
plt.ylabel('销量(斤)')
plt.legend(loc='upper left') #第二个图形显示图例(label),位置在左上方
plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线

#第二个图形:(绘制竖向条形图)
plt.subplot(2,2,2) #2行2列中的第2个图形
plt.title("语文成绩的分析比较",fontsize=18,loc='right') #第二个图形的标题

x2 = ['李大杰','Jacky','Lily','Happy','Joe']
y2 = [20,40,30,70,55]
plt.xlabel('姓名')
plt.ylabel('分数')
plt.bar(x2,y2,label='语文成绩',color='red')
plt.legend(loc='upper right') #第二个图形显示图例(label),位置在右上方

#第三个图形:(绘制饼形图)
plt.subplot(2,2,3) #2行2列中的第3个图形
plt.title("苹果一周销量情况(百分比)") #第三个图形的标题

Labels = ['Mon','Tues','Wed','Thur','Fri','Sat','Sun'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值
colors=['red','yellow','slateblue','green','magenta','cyan','darkorange']
plt.pie(Data,labels = Labels,colors = colors,labeldistance = 1.02,autopct = '%.1f%%',
startangle = 90,radius = 0.5,center = (0.2,0.2),textprops = {'fontsize':9,'color':'k'},pctdistance = 0.6)
plt.legend(loc='lower right') #第三个图形显示图例(自定义图例的位置(右下方))
plt.axis('equal')

#第四个图形:(绘制面积图)
plt.subplot(2,2,4) #2行2列中的第4个图形
plt.title("各位同学的多门学科成绩的比较") #第四个图形的标题

x = ['李大杰','Jacky','Lily','Happy']
y1 = [6,9,5,8]
y2 = [3,2,5,4]
y3 = [1,3,2,3]

plt.stackplot(x,y1,y2,y3,colors=['green','red','pink'])
plt.legend(['语文成绩','数学成绩','物理成绩'],loc='upper left') #第四个图形显示图例(自定义图例的内容、位置(左上方))
plt.xlabel('姓名')
plt.ylabel('分数')

plt.show() #显示图形

脚本运行后的图形效果:
图片72.png





相关文章:
Pandas的基础
Pandas的数据转换

Windows下Python3使用绘图库Matplotlib
Pandas+Excel+绘图库Matplotlib+Seaborn图表

返回列表