折线图绘制
流程:
1、先导入相关包:from matplotlib import pyplot as plt 或者import matplotlib.pyplot as plt;
2、传入相关x,y的值,使用plot(x,y)来绘制折线图;在这一步可以设置具体细节的值,比如线条样式、宽度、颜色、透明度等等;
折线设置具体代码:plt.plot(x,y,color="green",alpha=0.5,linestyle="-",linewidth=3)
折点设置具体代码:plt.plot(x,y,marker="o",color="g",markersize=20,markeredgecolor="b",markeredgewidth=5)
3、使用plt.show来展示绘制图形;
设置图片的大小和保存;
from matplotlib import pyplot as plt
import random
x=range(2,26,2)
y=[random.randint(15,30)for i in x]
#设置图片的大小:
plt.figure(figsize=(20,8),dpi=80)#调整图片的大小与参数,分辨率等等;
plt.plot(x,y)
plt.show()
plt.savefig("./t5.png")#保存图片
设置x轴和y轴的刻度标签(包括范围大小,方向、单位,最大最小值等)
#设置x轴和y轴的刻度:
from matplotlib import pyplot as plt x=range(2,26,2)
y=[random.randint(15,30)for i in x]plt.figure(figsize=(20,8),dpi=80)#设置x轴的刻度:
plt.xticks(x)
plt.xticks(range(1,25))
plt.yticks(y)
plt.yticks(range(min(y),max(y)+1))#设置x轴的刻度标签:
x_ticks_label=["{}:00".format(i)for i in x]
plt.xticks(x,x_ticks_label,rotation=45)
#设置y轴的刻度标签:
y_ticks_label=["{}c".format(i) for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1),y_ticks_label)plt.plot(x,y)
plt.show()
输出:
文章图片
设置显示中文:包括x轴和y轴,以及标题,需要首先导入字体管理模块,并找到自己电脑上的字体路径,最后再来对x轴和y轴的标题以及图表标题进行字体颜色、方向设置等
#设置显示中文:
from matplotlib import pyplot as plt
import matplotlib
import random
x=range(0,120)
y=[random.randint(10,30)for i in range(120)]
#设置画布的大小和分辨率:
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#导入字体管理模块:并找到自己电脑上的字体路径:
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=18)
#设置x轴,并将字体旋转45度;
plt.xlabel("时间",fontproperties=my_font)
#设置y轴:
plt.ylabel("次数",fontproperties=my_font)
#设置标题:
plt.title("每分钟跳动次数",color="red",fontproperties=my_font)
#绘制图形:
plt.show()
输出:
文章图片
一图多线:两个轴的设置,以及网格、图例、字体;
y1=[1,2,3,5,4,3,6,7,8,6]
y2=[1,2,2,1,3,5,4,7,5,8]
x=range(1,11)
plt.figure(figsize=(20,8),dpi=80)plt.plot(x,y1,color="r",label="A部门")
plt.plot(x,y2,color="b",label="B部门")#设置x轴刻度:显示格式、字体、旋转方向;
xtick_labels=["第{}周".format(i) for i inx]
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=18)
plt.xticks(x,xtick_labels,fontproperties=my_font,rotation=45)#绘制网格:透明度
plt.grid(alpha=0.4)#设置图例:包括字体,位置等;
plt.legend(prop=my_font,loc="upper right")#绘制图形:
plt.show()
输出:
文章图片
一图多个子图:包括子图的字体大小,透明度设置;子图的位置 ,具体图形的内容;
#设置一个图多个坐标子系;采用add_subplot系列;
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,100)#先设置好子图的字体大小,透明度;
fig=plt.figure(figsize=(20,10),dpi=80)#新建子图1:
ax1=fig.add_subplot(2,2,1)
ax1.plot(x,x)
#新建子图2:
ax2=fig.add_subplot(2,2,2)
ax2.plot(x,x**2)
ax2.grid(color="r",linestyle="--",linewidth=1,alpha=0.3)
#新建子图3:
ax3=fig.add_subplot(2,2,3)
ax3.plot(x,np.log(x))#绘制图形:
plt.show()
输出:
文章图片
设置坐标范围:
import matplotlib.pyplot as plt
import numpy asnp
x=np.arange(-10,11,1)
y=x**2
plt.plot(x,y)
#可以调整x,y的起点:
plt.xlim(xmin=0)
plt.ylim(ymin=0)
plt.show()
输出:
文章图片
改变坐标轴 的默认显示方式:
import matplotlib.pyplot as plt
import numpy as np
y=range(0,14,2)
x=[-3,-2,-14,0,1,2,3]
ax=plt.gca()#获取当前图表的图像:
#设置图形的包围线:
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.spines["bottom"].set_color("blue")
ax.spines["left"].set_color("red")
#设置底边的移动范围,移动到y轴的0位置;
ax.spines["bottom"].set_position(("data,0"))
ax.spines["left"].set_position(("data,1"))
plt.plot(x,y)
plt.show()
绘制散点图:
#绘制散点图:
frommatplotlib import pyplot as plt
from matplotlib import font_manager
import numpy as np
y=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,19,21,22,22,22,23,24]
x=range(1,32)#设置图形大小:
plt.figure(figsize=(20,8),dpi=80)
#使用scatter绘制散点图:
size=np.random.randint(0,100,31)
plt.scatter(x,y,label="3月份",alpha=0.5,s=size,c="g")#绘制x轴的刻度:
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=18)
_xticks_labels=["3月{}日".format(i)for i in x]
plt.xticks(x[::3],_xticks_labels[::3],fontproperties=my_font)#绘制y轴的刻度:
_yticks_labels=["{}c".format(i)for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1),_yticks_labels)#绘制坐标轴标题:
plt.xlabel("日期",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)#绘制图例:
plt.legend(prop=my_font)
plt.show()#绘制流程:导入相关的库和包-得到x和y的值-设置图形的大小
#-使用scatter绘制图形并设置具体的一些值-绘制x轴和y轴的刻度、显示格式、设置字体、显示范围
#-绘制坐标轴标题-绘制图例;
输出:
文章图片
绘制条形图:导入相关模块—数据准备—字体设置—设置图片大小—绘制图形,调整图形中的参数
—设置x轴和y轴刻度值—给图形加上标注—展示绘制的图形
from matplotlib import pyplot as plt
from matplotlib import font_manager
a=["流浪地球","疯狂的外星人","飞驰人生","大黄蜂","熊出没.原始时代","新喜剧之王"]
b=[38.13,19.85,14.89,11.36,6.47,5.93]
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=18)plt.figure(figsize=(20,8),dpi=80)
#绘制条形图
rects=plt.bar(a,[float(i) for i in b],width=0.3,color=["r","g","b","r","g","b"])
plt.xticks(range(len(a)),a,fontproperties=my_font)
plt.yticks(range(0,41,5),range(0,41,5))#给图形加上标注(水平居中)
for rect in rects:
height=rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2,height+0.3,str(height),ha="center")
plt.show()
输出:
文章图片
绘制横向条形图:
from matplotlib import pyplot as plt
from matplotlib import font_manager
a=["流浪地球","疯狂的外星人","飞驰人生","大黄蜂","熊出没.原始时代","新喜剧之王"]
b=[38.13,19.85,14.89,11.36,6.47,5.93]
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=18)plt.figure(figsize=(20,8),dpi=80)plt.barh(range(len(a)),b,height=0.5,color=["r","g","b","r","g","b"])
plt.yticks(range(len(a)),a,fontproperties=my_font,rotation=45)#给图形加上标注:
for rect in rects:
width=rect.get_width()
plt.text(width,rect.get_y()+0.3/2,str(width),va="center")
plt.show()
输出 :
文章图片
并列条形图:
from matplotlib import pyplot as plt
import numpy as np
index=np.arange(4)
BJ=[50,55,53,60]
SH=[44,66,55,41]
#并列
plt.bar(index,BJ,width=0.3)
plt.bar(index+0.3,SH,width=0.3,color="green")
plt.xticks(index+0.3/2,index)
plt.show()
文章图片
堆叠条形图 :
from matplotlib import pyplotas plt
import numpy as np
index=np.arange(4)
BJ=[50,55,53,60]
SH=[44,66,55,41]
#并列
plt.bar(index,BJ,width=0.3)
plt.xticks(index+0.3/2,index)
plt.bar(index,SH,bottom=BJ,width=0.3,color="green")
plt.show()
文章图片
绘制直方图:
流程:先导入需要的库和包—生成数据—绘制直方图—显示横轴、纵轴标签—显示图表标题—图表展示
from matplotlib import pyplot as plt
import numpy as np
import matplotlib#设置matplotlib正常显示中文和负号:
matplotlib.rcParams["font.sans-serif"]=["SimHei"]#用黑体显示中文
matplotlib.rcParams["axes.unicode_minus"]=False#正常显示负号#随机生成(10000,)服从正态分布的数据:
data=https://www.it610.com/article/np.random.randn(10000)#绘制直方图:
plt.hist(data,bins=40,normed=0,facecolor="blue",edgecolor="black",alpha=0.7)#显示横轴标签:
plt.xlabel("区间")#显示纵轴标签
plt.ylabel("频数/频率")#显示图表标题:
plt.title("频数/频率分布直方图")plt.show()
文章图片
绘制饼图:
导入相关模块—设置字体—准备数据、以及具体设置
—绘制饼图—图形大小设置—具体细节:角度、颜色设计—图例设置:位置/字体—绘制展示
from matplotlib import pyplot as plt
import numpy as np
from matplotlib import font_managermy_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=10)label_list=["第一部分","第二部分","第三部分"]
size=[55,35,10]
color=["r","g","b"]
explode=[0,0.05,0]plt.figure(figsize=(20,8),dpi=100)
patches,l_text,p_text=plt.pie(size,
explode=explode,
colors=color,
labels=label_list,
labeldistance=1.1,
autopct="%1.1f%%",
shadow=False,
startangle=90,
pctdistance=0.6
)
for t in l_text:
print(dir(t))
t.set_fontproperties(my_font)
for t in p_text:
t.set_size(18)
for i in patches:
i.set_color("pink")
break
plt.legend(prop=my_font,loc="upper right")
plt.show()
输出:
文章图片
实现饼图特效——增加阴影效果和破裂效果;
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF",size=14)
x=[15,30,45,10]
label_list=["Frogs","Hogs","Dogs","Logs"]
color=["blue","orange","green","red"]
explode=[0,0.09,0,0]
plt.figure(figsize=(15,15),dpi=100)
patches,l_text,p_text=plt.pie(x,
explode=explode,
colors=color,
labels=label_list,
labeldistance=1.1,
autopct="%1.1f%%",
shadow=True,
startangle=90,
pctdistance=0.6
)
plt.legend(prop=my_font,loc="upper right")
plt.show()
【python绘制各种数据可视化图形(饼图、直方图、条形图、折线图、散点图)】输出:
文章图片