数据可视化
matplotlib库
导入模块:import matplotlib.pyplot as plt
基本操作
创建画布:fig = plt.figure()
添加子图:axes = fig.add_subplot(a, b, c)
:定义fig中一共有a行b列个子图,axes是这些图中的第c个。画统计图需要在子图里面进行。如果只想画一个图,就可以让a,b,c都等于1
给子图添加横纵坐标标题:axes.set_xlabel('x'),axes.set_ylabel('y')
给子图添加标题:axes.set_title('title)
显示画布(必须要加,不然显示不出来):plt.show()
使用条件判定
单变量:直方图,散点图,饼图:x为变量,y为值的分布
双变量:箱线图,散点图:x为变量,y为变量
多变量:散点图,堆叠图:x为变量,y为变量,颜色,大小等也可以表示变量
添加线图
axes.plot(X_data, Y_data)
添加直方图
axes.hist(data,bins=a)
,也就是将data分成a段
散点图
axes.scatter(x=data1,y=data2,s=size,c=color,alpha=0.5)
:以data1为横轴,data2为纵轴,点的大小为size,颜色为color,透明度为0.5画散点图
箱线图
axes.boxplot([data1,data2],labels=['label1','label2'])
:将数据分成data1和data2两组,分别赋予label1和label2这两个标签名
饼图
pies.pie(x=, labels=, autopct=,counterclock=)
例子
import pandas as pd
import matplotlib.pyplot as plt
tips = pd.read_csv("seaborndata/tips.csv")
fig = plt.figure(figsize=(14, 14))
axes1 = fig.add_subplot(3, 2, 1)
axes1.hist(tips['total_bill'], bins=10)
axes1.set_title("Histogram of Total Bill")
axes1.set_xlabel("Total Bill")
axes1.set_ylabel("Frequency")
scatter_plot = fig.add_subplot(3, 2, 2)
scatter_plot.scatter(tips['total_bill'], tips['tip'])
scatter_plot.set_title("Scatterplot of Total Bill VS Tip")
scatter_plot.set_xlabel("Total Bill")
scatter_plot.set_ylabel("Tip")
box_plot = fig.add_subplot(3, 2, 3)
box_plot.boxplot([tips[tips['sex'] == 'Female']['tip'], tips[tips['sex'] == 'Male']['tip']], labels=['Female', 'Male'])
box_plot.set_xlabel('Sex')
box_plot.set_ylabel('Tip')
box_plot.set_title("Boxplot of Tips by Sex")
def sexcode(sex):
if sex == 'Female':
return 2
return 1
tips['sex_color'] = tips['sex'].apply(sexcode)
scatter_plot_color = fig.add_subplot(3, 2, 4)
scatter_plot_color.scatter(x=tips['total_bill'], y=tips['tip'], s=tips['size']*10, c=tips['sex_color'], alpha=0.5)
scatter_plot_color.set_title('Total Bill with color')
scatter_plot_color.set_xlabel("Total Bill")
scatter_plot_color.set_ylabel("Tip")
pies = fig.add_subplot(3, 2, 5)
pies.pie(x=[1, 23, 3.4, 14.4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%',counterclock=False)
fig.show()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AndrewLee!