概述
python数据可视化
- 一、通用模板
- 1、导包
- 2、基本函数
- 3、其它设置
- 二、各种图型实例
- 1、折线图
- 2、条形图
- 3、扇形图
- 4、直方图
- 5、散点图
- 6、箱型图
一、通用模板
1、导包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
2、基本函数
plt.figure(figsize=(6,4)) # 设置画布大小
plt.axis([-5, 5, 0, 10]) # 设置x,y轴范围
plt.xlabel("xlabel", fontsize=15, rotation=360) # x轴
plt.ylabel("ylabel", fontsize=15, rotation=360) # y轴
plt.title("title", fontsize=15) # fontsize:字体大小 rotation:旋转度数
plt.xticks(fontsize=12, rotation=360) # x轴刻度字体大小
plt.yticks(fontsize=12, rotation=360) # y轴刻度字体大小
plt.legend(loc="upper left", fontsize=12) # 图例
plt.grid() # 网格
plt.show()
3、其它设置
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文字符乱码问题
plt.rcParams['axes.unicode_minus'] = False # 正常显示正负号
plt.text(x, y+1, y, ha="center", va="bottom", fontsize=12)
#标记特殊点,如极值点
plt.annotate("文本", xy=(2012, data[2012]), xytext=(2025, 2100), arrowprops=dict(facecolor='r', edgecolor="red"))
二、各种图型实例
plt.plot()
折线图plt.hist()
直方图plt.bar()
条形图plt.pie()
扇形图plt.scatter()
散点图plt.boxplot()
箱型图
1、折线图
t = np.arange(0.,5.,0.2) #左闭右开从0到5间隔0.2
plt.plot(t,t,"r--",t,t**2,"bs",t,t**3,"g^")
plt.show()
x = np.linspace(-np.pi, np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
plt.axvline(0,ymin=-1,ymax=1,c='k',ls=':')
plt.axhline(0,xmin=-np.pi,xmax=np.pi,c='k',ls=':')
# plt.plot(x, y1, 'r-', x, y2, 'b-')
plt.plot(x, y1, 'r-', label='sin(x)', linewidth = 2.5)
plt.plot(x, y2, 'b-', label='cos(x)', linewidth = 2.5)
plt.legend(loc='upper left')
# 图例位置
# upper left upper center upper right
# center left center center right
# lower left lower center lower right
plt.show()
df = pd.read_excel(r'D:excelData豆瓣电影修改版02.xlsx',index_col=0)
data = df["年代"].value_counts()
data = data.sort_index()[:-2] #排除掉2016年以后的数据,共两条
x = data.index
y = data.values
plt.plot(x,y,color = 'b')
plt.title("每年电影数量",fontsize = 20)
plt.ylabel("电影数量",fontsize = 18)
plt.xlabel("年份",fontsize = 18)
#标记特殊点如极值点,xy设置箭头尖的坐标,xytext注释内容起始位置,arrowprops对箭头设置,传字典,facecolor填充颜色,edgecolor边框颜色
plt.annotate("2012年达到最大值", xy = (2012,data[2012]), xytext = (2025,2100), arrowprops = dict(facecolor = "lightblue",edgecolor = "lightblue"))
#纯文本注释内容,例如注释增长最快的地方
# plt.text(1980,500,"电影数量开始快速增长")
plt.annotate("电影数量开始快速增长", xy=(1980,data[1980]), xytext=(1960,750), arrowprops=dict(facecolor = 'lightblue', edgecolor = 'lightblue'))
for (a,b) in zip(x[::10],y[::10]): #每隔10年进行数量标记,防止过于密集
plt.text(a,b+10,b,ha = "center", va = "bottom", fontsize = 10)
plt.show()
2、条形图
data = df["产地"].value_counts()
x = data.index
y = data.values
plt.figure(figsize = (10,6)) #设置图片大小
plt.bar(x,y,color="g") #绘制柱状图,表格给的数据是怎样就怎样,不会自动排序
plt.title("各国家或地区电影数量", fontsize = 20) #设置标题
plt.xlabel("国家或地区",fontsize = 18)
plt.ylabel("电影数量", fontsize=18) #对横纵轴进行说明
# plt.tick_params(labelsize = 14) #设置标签字体大小
# plt.xticks(rotation = 90) #标签转90度
plt.xticks(fontsize=14, rotation=90)
plt.yticks(fontsize=14)
for a,b in zip(x,y): #数字直接显示在柱子上(添加文本)
#a:x的位置,b:y的位置,加上10是为了展示位置高一点点不重合,
#第二个b:显示的文本的内容,ha,va:格式设定,center居中,top&bottom在上或者在下,fontsize:字体指定
plt.text(a,b+10,b,ha = "center",va = "bottom",fontsize = 10)
# plt.grid() #画网格线,有失美观因而注释点
plt.show()
3、扇形图
patches, out_text, in_text = plt.pie(y, labels=data.index, autopct="%.lf %%", colors="bygr", startangel=90, explode=[0.1, 0, 0.1, 0])
# y: (每一块)的比例,如果sum(x)>1会使用sum(x)归一化
# labels:(每一块)饼图外侧显示的说明文字
# autopct: 控制饼图内百分比设置,可以使用format字符串或者format function
# colors: 设置颜色
# startangle: 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
# explode:(每一块)离开中心距离
# '%1.1f': 指小数点前后位数(没有用空格补齐)
data = pd.cut(df["时长"], [0,60,90,110,1000]).value_counts() #数据离散化
y = data.values
y = y/sum(y) #归一化,不进行的话系统会自动进行
plt.figure(figsize = (7,7))
plt.title("电影时长占比",fontsize = 15)
patches,l_text,p_text = plt.pie(y, labels = data.index, autopct = "%.1f %%", colors = "bygr", startangle = 90, explode=[0.05, 0, 0.05, 0])
for i in p_text: #通过返回值设置饼图内部字体
i.set_size(15)
i.set_color('w')
for i in l_text: #通过返回值设置饼图外部字体
i.set_size(15)
i.set_color('r')
plt.legend() #图例
plt.show()
4、直方图
plt.hist(arr, bins=20, facecolor='c', edgecolor='k', alpha=0.5)
# arr: 直方图一维数组,必须要有
# bins: 直方图的柱数
plt.figure(figsize = (10,6))
plt.hist(df["评分"], bins = 20, edgecolor = 'k', alpha = 0.5)
plt.show()
5、散点图
x = df["时长"][::100]
y = df["评分"][::100] #解决数据冗杂的问题
plt.figure(figsize = (10,6))
plt.scatter(x,y,marker = 'o',label = "评分")
plt.legend() #图例
plt.title("电影时长与评分散点图",fontsize = 20)
plt.xlabel("时长",fontsize = 18)
plt.ylabel("评分",fontsize = 18)
plt.show()
6、箱型图
data = df[df.产地 == "美国"]["评分"]
plt.figure(figsize = (10,6))
plt.boxplot(data,whis = 1.5,flierprops = {"marker":'o',"markerfacecolor":"r","color":'k'}
,patch_artist = True, boxprops = {"edgecolor":'k',"facecolor":"#66ccff"})
# whis: 指定上下须与上下四分位的距离,默认为为1.5倍的四分位差
# filerprops: 设置异常值的属性,如异常点的形状、大小、填充色等
# patch_artist: 是否填充箱体的颜色
# boxprops: 设置箱体的属性,如边框色,填充色等
plt.title("美国电影评分",fontsize = 20)
plt.show()
data1 = df[df.产地 == "中国大陆"]["评分"]
data2 = df[df.产地 == "日本"]["评分"]
data3 = df[df.产地 == "中国香港"]["评分"]
data4 = df[df.产地 == "英国"]["评分"]
data5 = df[df.产地 == "法国"]["评分"]
plt.figure(figsize = (12,8))
plt.boxplot([data1,data2,data3,data4,data5],labels = ["中国大陆","日本","中国香港","英国","法国"],
whis = 2,flierprops = {"marker":'o',"markerfacecolor":"r","color":'k'}
,patch_artist = True, boxprops = {"color":'k',"facecolor":"#66ccff"},
vert = False)
ax = plt.gca() #获取当时的坐标系
ax.patch.set_facecolor("gray") #设置坐标系背景颜色
ax.patch.set_alpha(0.3) #设置背景透明度
plt.title("电影评分箱线图",fontsize = 20)
plt.show()
最后
以上就是单薄台灯为你收集整理的python数据可视化的全部内容,希望文章能够帮你解决python数据可视化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复