import pandas as pd
import matplotlib.pyplot as plt
#利用pandas读入泰坦尼克号人员数据
titanic = pd.read_csv("train.csv")
#提取“Age”属性中所有数值
age = titanic["Age"]
num_col = [[10, 0], [20, 0], [30, 0], [40, 0], [50, 0],
[60, 0], [70, 0], [80, 0], [90, 0], [100, 0]]
#统计每个年龄段的人数(忽略无效值)
for i in range(0, len(age)):
if 0 < age[i] <= 100:
index = int(age[i] // 10)
num_col[index][1] += 1
else:
continue
#横坐标值
year_col = ['0-9', '10-19', '20-29', '30-39', '40-49',
'50-59', '60-69', '70-79', '80-89', '90-99']
#数值
value_col = []
for i in range(0, 10):
value_col.append(num_col[i][1])
#绘制条形图,第一个参数为横轴,第二个参数为各项值,第三个参数为条形宽度
plt.bar(year_col, value_col, 0.3)
#barh将绘制横向条形图
#plt.barh(year_col, value_col, 0.3)
plt.title("Titanic age distribution")
plt.xlabel("age")
plt.xticks(rotation=45)
plt.ylabel("values")
plt.show()
#数据与条形图一致
#第三个参数越大点越大
plt.scatter(year_col, value_col, 30)
可以利用柱形图绘制函数plt.hist(age, bins=30)自动计算每指定年龄区间人数,减少在第三个条形图绘制中代码量
import pandas as pd
import matplotlib.pyplot as plt
titanic = pd.read_csv("train.csv")
age = titanic["Age"]
#bins=30, 将整个年龄区间分为30个小区间
plt.hist(age, bins=30)
#在参数中添加range(20,30)可表示绘制范围,结果为只绘制年龄20-30区间内的柱形图情况
#plt.hist(age, range(20-30), bins=30)
plt.title("Titanic age distribution")
plt.xlabel("age")
plt.ylabel("values")
plt.show()
plt.boxplot(value_col)
import matplotlib.pyplot as plt
year = [1667, 1990, 1999, 2008, 2018]
value = [1, 2, 3, 4, 5]
#第一个参数是X轴,第二个参数是Y轴,第三个参数是颜色,第四个参数是加标签
plt.plot(year, value, c='red', label='label')
#控制X轴坐标的表示,参数为变化角度
plt.xticks(rotation=45)
#指定横轴名称
plt.xlabel('year')
#指定纵轴名称
plt.ylabel("value")
#指定图表名称
plt.title("show plot")
#控制标签框位置,best为自适应位置
plt.legend(loc='best')
plt.show()
将大图平分成X*Y块
x:大图分为X行
y:大图分为Y列
z:子图所在大图中的区域标号
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
plt.title("ax1")
ax2 = fig.add_subplot(2, 2, 2)
plt.title("ax2")
ax3 = fig.add_subplot(2, 2, 3)
plt.title("ax3")
ax4 = fig.add_subplot(2, 2, 4)
plt.title("ax4")
plt.show()