python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python中matplotlib库绘制各种图

Python中使用matplotlib库绘制各种图

作者:鹿上的程序媛

这篇文章主要介绍了Python中使用matplotlib库绘制各种图方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.绘制折线图(pyplot.plot(x,y))

在这里插入图片描述

from matplotlib import pyplot
x = range(2,28,2)
y = [15,13,14,17,20,25,26,26,24,22,18,15,1]
//设置图片大小
fig = pyplot.figure(figsize=(5,5),dpi=80)
//绘图
pyplot.plot(x,y)
//保存图片
pyplot.savefig("./sig_size.png")
//展示图片
pyplot.show()

绘制两条折线

# import matplotlib
from matplotlib import pyplot
x = range(11,31)
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,2]
#set the pic size
pyplot.figure(figsize=(10,5),dpi=80)
#ploting
pyplot.plot(x,y1,label="Luna",color="pink",linestyle='--',linewidth=1)
pyplot.plot(x,y2,label="Jim",color="tomato",linestyle='--',linewidth=1)
# set x/y-axis step
_xtick_labels = ["{}".format(i) for i in x]
pyplot.xticks(x,_xtick_labels)
pyplot.yticks(range(0,7))
# set x-asix desciption
pyplot.xlabel("Age")
# set y-asix description
pyplot.ylabel("Num")
# add legend
pyplot.legend()
# plot grid
pyplot.grid(alpha=0.2,linestyle=':')
# show
pyplot.show()

2.绘制散点图(pyplot.scatter(x,y))

在这里插入图片描述

from matplotlib import pyplot
from matplotlib import font_manager
y_3 = [11,12,12,13,14,11,12,17,20,25,22,27,21,29,23,22,24,12,11,21,10,12,11,13,34,34,23,22,24,12,11]
y_10 = [34,34,33,33,34,32,31,31,30,32,21,23,23,13,22,21,24,25,23,23,11,12,12,13,34,34,23,22,24,12,11]
x_3 = range(1,32)
x_10 = range(41,72)
pyplot.figure(figsize=(20,10),dpi=80)
pyplot.scatter(x_3,y_3,color="blue",label="March")
pyplot.scatter(x_10,y_10,color="cyan",label="Noverber")
_x = list(x_3)+list(x_10)
_xticks_label = ["March{}".format(i) for i in x_3]
_xticks_label += ["Noverber{}".format(i-40) for i in x_10]
pyplot.xticks(_x[::10],_xticks_label[::10])
pyplot.xlabel("date")
pyplot.ylabel("temperature")
pyplot.legend()
pyplot.show()

3.绘制条形图(pyplot.bar())

在这里插入图片描述

from matplotlib import pyplot
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="")
a = ["Friends","My Heart go on","kongfu"]
b = [57.1,25,12]
pyplot.figure(figsize=(4,6),dpi=80)
pyplot.bar(a,b,width=0.3)
pyplot.xlabel("movie")
pyplot.ylabel("score")
pyplot.xticks(range(len(a)),a,rotation=15)
pyplot.show()

pyplot.barh()=>绘制横着的条形图

在这里插入图片描述

from matplotlib import pyplot
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="")
a = ["Friends","My Heart go on","kongfu"]
b = [57.1,25,12]
pyplot.figure(figsize=(8,6),dpi=80)
pyplot.barh(a,b,height=0.3)
pyplot.ylabel("movie")
pyplot.xlabel("score")
pyplot.yticks(range(len(a)),a)
pyplot.grid(alpha=0.2)
pyplot.show()

绘制对比条形图(绘制三次)

在这里插入图片描述

from matplotlib import pyplot
a = ["movie1","movie2","movie3","movie4","movie5"]
b_1 = [3124,123,5431,3411,2344]
b_2 = [3456,2123,1455,8764,2323]
b_3 = [213,431,124,56,120]
bar_width=0.2
x_1 = list(range(len(a)))
x_2 = [i+bar_width for i in x_1]
x_3 = [i+bar_width*2 for i in x_1]
pyplot.figure(figsize=(10,4),dpi=80)
pyplot.bar(range(len(a)),b_1,width=bar_width,color="blue",label="1")
pyplot.bar(x_2,b_2,width=bar_width,color="pink",label="2")
pyplot.bar(x_3,b_3,width=bar_width,label="3")
pyplot.xticks(x_2,a)
pyplot.legend()
pyplot.show()

4.绘制直方图(pyplot.hist())

频数分布直方图pyplot.hist(a,num_bins)

在这里插入图片描述

from matplotlib import pyplot
a = [9,34,13,73,44,34,76,34,72,17,96,46,84,52,72,26,81,64,79,45,99]
d = 10
num_bins = (max(a)-min(a))//d
pyplot.figure(figsize=(10,6),dpi=80)
pyplot.hist(a,num_bins)
pyplot.xlabel("time")
pyplot.ylabel("num")
pyplot.xticks(range(min(a),max(a)+d,d))
pyplot.grid()
pyplot.show()

频率分布直方图pyplot.hist(a,num_bins,density=True)

在这里插入图片描述

from matplotlib import pyplot
a = [9,34,13,73,44,34,76,34,72,17,96,46,84,52,72,26,81,64,79,45,99]
d = 10
num_bins = (max(a)-min(a))//d
pyplot.figure(figsize=(10,6),dpi=80)
pyplot.hist(a,num_bins,density=True)
pyplot.xlabel("time")
pyplot.ylabel("percentage")
pyplot.xticks(range(min(a),max(a)+d,d))
pyplot.grid()
pyplot.show()

绘制组距变化的直方图(pyplot.bar())

这里的组距为一个数组

在这里插入图片描述

from matplotlib import pyplot
interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quality = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]
pyplot.bar(range(12),quality,width=1)
_x = [i-0.5 for i in range(13)]
_xtick_label = interval+[150]
pyplot.xticks(_x,_xtick_label)
pyplot.grid()
pyplot.show()

总结

1.如何选择哪种图来呈现数据?

2.matplotlib.plot(x,y)

绘制的是折线图,x为代表x轴的list,y为代表y轴的值的list,这里的x和y的元素个数必须是一致的

在这里插入图片描述

3.matplotlib.bar(x,height,width)

绘制的是条形图,x为代表x轴的list,height为对应的x的值,width为条形图的宽度

在这里插入图片描述

4.matplotlib.barh(y,width,height)

绘制横着的条形图,x和y的含义相反

在这里插入图片描述

5.matplotlib.scatter(x,y)

绘制散点图

在这里插入图片描述

6.matplotlib.hist(x,bin,density)

绘制直方图,这里的x为源数据的数组,bin为分多少组显示,这里的图的y值代表在某个范围内的频率或频数,通过参数density可以绘制频数直方图或频率直方图,默认为频数直方图一般设置一个组距dbin = (max(a)-min(x))//d

在这里插入图片描述

7.xticks和yticks的设置

设置x轴和y轴的坐标

8.label和title,grid的设置

9.绘图的大小(figure)和保存图片(savefig)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文