文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Python的Matplotlib库绘图

2023-07-02 15:23

关注

这篇“怎么使用Python的Matplotlib库绘图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Python的Matplotlib库绘图”文章吧。

中文字体设置:

# 字体设置plt.rcParams['font.sans-serif'] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = False

1、基本使用

Matplotlib:是一个Python的2D绘图库,通过Matplotlib,开发者可以仅需要几行代码,便可以生成折线图,直方图,条形图,饼状图,散点图等。
plot是一个画图的函数,他的参数:plot([x],y,[fmt],data=None,**kwargs)

1.1、线条样式 & 颜色

(1)点线形式

怎么使用Python的Matplotlib库绘图

(2)线条颜色

怎么使用Python的Matplotlib库绘图

import matplotlib.pyplot as pltimport numpy as np# 原始线图plt.plot(range(10),[np.random.randint(0,10) for x in range(10)])# 点线图plt.plot(range(10),[np.random.randint(0,10) for x in range(10)],"*")# 线条颜色plt.plot([1,2,3,4,5],[1,2,3,4,5],'r') #将颜色线条设置成红色

运行结果:

怎么使用Python的Matplotlib库绘图

1.2、轴&

范例:

x = range(10)y = [np.random.randint(0,10) for x in range(10)]plt.plot(x,y,linewidth=10,color='red')# 设置图plt.title("sin函数")# 设置轴plt.xlabel("x轴")plt.ylabel("y轴")# 设置轴刻度plt.xticks(range(10),["第%d天"%x for x in range(1,10)])plt.yticks(range(10),["第%d天"%x for x in range(1,10)])# 加载字体plt.rcParams['font.sans-serif'] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = False

运行结果:

怎么使用Python的Matplotlib库绘图

1.3、marker设置

marker:关键点重点标记

范例:

x = range(10)y = [np.random.randint(0,10) for x in range(10)]plt.plot(x,y,linewidth=10,color='red')# 重点标记plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)

运行结果:

怎么使用Python的Matplotlib库绘图

1.4、注释文本

annotate:注释文本

范例:

x = range(10)y = [np.random.randint(0,10) for x in range(10)]plt.plot(x,y,linewidth=10,color='red')# 重点标记plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)# 注释文本设置plt.annotate('local max', xy=(5, 5), xytext=(10,15),arrowprops=dict(facecolor='black',shrink=0.05),)

运行结果:

怎么使用Python的Matplotlib库绘图

1.5、设置图形样式

plt.figure:调整图片的大小和像素`num`:图的编号,`figsize`:单位是英寸,`dpi`:每英寸的像素点,`facecolor`:图片背景颜色,`edgecolor`:边框颜色,`frameon`:是否绘制画板。

范例:

x = range(10)y = [np.random.randint(0,10) for x in range(10)]# 设置图形样式plt.figure(figsize=(20,10),dpi=80)plt.plot(x,y,linewidth=10,color='red')

运行结果:

怎么使用Python的Matplotlib库绘图

2、条形图

应用场景:

相关参数:

barh:条形图

2.1、横向条形图 范例

movies = {    "流浪地球":40.78,    "飞驰人生":15.77,    "疯狂的外星人":20.83,    "新喜剧之王":6.10,    "廉政风云":1.10,    "神探蒲松龄":1.49,    "小猪佩奇过大年":1.22,    "熊出没·原始时代":6.71}plt.barh(np.arange(len(movies)),list(movies.values()))plt.yticks(np.arange(len(movies)),list(movies.keys()),fontproperties=font)plt.grid()

运行结果

怎么使用Python的Matplotlib库绘图

2.2、分组条形图

范例:

movies = {    "流浪地球":[2.01,4.59,7.99,11.83,16],    "飞驰人生":[3.19,5.08,6.73,8.10,9.35],    "疯狂的外星人":[4.07,6.92,9.30,11.29,13.03],    "新喜剧之王":[2.72,3.79,4.45,4.83,5.11],    "廉政风云":[0.56,0.74,0.83,0.88,0.92],    "神探蒲松龄":[0.66,0.95,1.10,1.17,1.23],    "小猪佩奇过大年":[0.58,0.81,0.94,1.01,1.07],    "熊出没·原始时代":[1.13,1.96,2.73,3.42,4.05]}plt.figure(figsize=(20,8))width = 0.75bin_width = width/5movie_pd = pd.DataFrame(movies)ind = np.arange(0,len(movies))# 第一种方案for index in movie_pd.index:    day_tickets = movie_pd.iloc[index]    xs = ind-(bin_width*(2-index))    plt.bar(xs,day_tickets,width=bin_width,label="第%d天"%(index+1))    for ticket,x in zip(day_tickets,xs):        plt.annotate(ticket,xy=(x,ticket),xytext=(x-0.1,ticket+0.1))# 设置图例plt.ylabel("单位:亿")plt.title("春节前5天电影票房记录")# 设置x轴的坐标plt.xticks(ind,movie_pd.columns)plt.xlimplt.grid(True)plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

2.3、堆叠条形图

范例:

menMeans = (20, 35, 30, 35, 27)womenMeans = (25, 32, 34, 20, 25)groupNames = ('G1','G2','G3','G4','G5')xs = np.arange(len(menMeans))plt.bar(xs,menMeans)plt.bar(xs,womenMeans,bottom=menMeans)plt.xticks(xs,groupNames)plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

3、直方图

plt.hist:直方图

应用场景:

3.1、直方图

范例:

durations = [131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]plt.figure(figsize=(15,5))nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k')plt.xticks(bins,bins)for num,bin in zip(nums,bins):    plt.annotate(num,xy=(bin,num),xytext=(bin+1.5,num+0.5))plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

3.2、频率直方图

density:频率直方分布图

范例:

nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True)plt.xticks(bins,bins)for num,bin in zip(nums,bins):    plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))

运行结果:

怎么使用Python的Matplotlib库绘图

3.3、直方图

cumulative参数:nums的总和为1

范例:

plt.figure(figsize=(15,5))nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True)plt.xticks(bins,bins)for num,bin in zip(nums,bins):    plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))

运行结果:

怎么使用Python的Matplotlib库绘图

4、散点图

plt.scatter:散点图绘制:

范例:

plt.scatter(x =data_month_sum["sumprice"]     #传入X变量数据            ,y=data_month_sum["Quantity"]     #传入Y变量数据            ,marker='*'     #点的形状            ,s=10           #点的大小            ,c='r'          #点的颜色           )plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

5、饼图

饼图:一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系的。

matplotlib中,可以通过plt.pie来实现,其中的参数如下:

x:饼图的比例序列。labels:饼图上每个分块的名称文字。explode:设置某几个分块是否要分离饼图。autopct:设置比例文字的展示方式。比如保留几个小数等。shadow:是否显示阴影。textprops:文本的属性(颜色,大小等)。 范例

plt.figure(figsize=(8,8),dpi=100,facecolor='white')plt.pie(x = StockCode.values,                  #数据传入        radius=1.5,                            #半径        autopct='%.2f%%'                       #百分比显示        ,pctdistance=0.6,                      #百分比距离圆心比例        labels=StockCode.index,                #标签        labeldistance=1.1,                     #标签距离圆心比例        wedgeprops ={'linewidth':1.5,'edgecolor':'green'}, #边框的线宽和颜色        textprops={'fontsize':10,'color':'blue'})  #文本字体大小和颜色plt.title('商品销量占比',pad=100)              #设置及距离坐标轴的位置plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

6、箱线图

箱图的绘制方法是:

中位数:把数据按照从小到大的顺序排序,然后最中间的那个值为中位数,如果数据的个数为偶数,那么就是最中间的两个数的平均数为中位数。  
上下四分位数:同样把数据排好序后,把数据等分为4份。出现在`25%`位置的叫做下四分位数,出现在`75%`位置上的数叫做上四分位数。但是四分位数位置的确定方法不是固定的,有几种算法,每种方法得到的结果会有一定差异,但差异不会很大。

上下限的计算规则是:  

matplotlib中有plt.boxplot来绘制箱线图,这个方法的相关参数如下:

x:需要绘制的箱线图的数据。notch:是否展示置信区间,默认是False。如果设置为True,那么就会在盒子上展示一个缺口。sym:代表异常点的符号表示,默认是小圆点。vert:是否是垂直的,默认是True,如果设置为False那么将水平方向展示。whis:上下限的系数,默认是1.5,也就是上限是Q3+1.5IQR,可以改成其他的。也可以为一个序列,如果是序列,那么序列中的两个值分别代表的就是下限和上限的值,而不是再需要通过IQR来计算。positions:设置每个盒子的位置。widths:设置每个盒子的宽度。labels:每个盒子的labelmeanlineshowmeans:如果这两个都为True,那么将会绘制平均值的的线条。

范例:

#箱线图 - 主要观察数据是否有异常(离群点)#箱须-75%和25%的分位数+/-1.5倍分位差plt.figure(figsize=(6.4,4.8),dpi=100)#是否填充箱体颜色,是否展示均值,是否展示异常值,箱体设置,异常值设置,均值设置,中位数设置plt.boxplot(x=UnitPrice                               #传入数据            ,patch_artist=True                                #是否填充箱体颜色            ,showmeans=True                                   #是否展示均值            ,showfliers=True                                  #是否展示异常值            ,boxprops={'color':'black','facecolor':'white'}    #箱体设置            ,flierprops={'marker':'o','markersize':4,'markerfacecolor':'red'} #异常值设置            ,meanprops={'marker':'o','markersize':6,'markerfacecolor':'indianred'} #均值设置            ,medianprops={'linestyle':'--','color':'blue'}   #中位数设置           )plt.show()

运行结果:

怎么使用Python的Matplotlib库绘图

7、雷达图

雷达图:又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况

plt.polar来绘制雷达图,x轴的坐标点应该为弧度(2*PI=360°)

范例:

import numpy as npproperties = ['输出','KDA','发育','团战','生存']values = [40,91,44,90,95,40]theta = np.linspace(0,np.pi*2,6)plt.polar(theta,values)plt.xticks(theta,properties)plt.fill(theta,values)

运行结果:

怎么使用Python的Matplotlib库绘图

注意事项:

以上就是关于“怎么使用Python的Matplotlib库绘图”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯