使用matplotlib绘制简单图表
import matplotlib.pyplot as plt
import pandas as pd
# 数据读入
df = pd.read_csv('../data/data.csv', index_col='年份')
# 获取'人均GDP(元)'这一列的值
y = df['人均GDP(元)'].values
# 获取索引列的值(年份)
x = df.index.values
# 指定默认字体(防止中文出现乱码)
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定‘仿宋’字体
# 饼状图
fig, ax = plt.subplots()
ax.pie(y, labels=x)
plt.show()
# 数据读入
scatter_df = pd.read_csv('../data/BankData.csv', index_col='分行编号')
x = scatter_df['各项贷款余额']
y = scatter_df['不良贷款(亿元)']
# 指定默认字体(防止中文出现乱码)
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定‘仿宋’字体
# 散点图
fig, ax = plt.subplots()
ax.scatter(x, y, alpha=0.5) # alpha是设置透明度,这样点重合时看的明显
# 设置标题,标签
ax.set(title='散点图', xlabel='各项贷款余额',ylabel='不良贷款(亿元)')
# 显示图形
plt.show()
stackplot参数绘制堆积面积图
x:表示x轴的数据,可以是一维数
y:表示y轴的数据,可以是二维数组或一维数组序列
labels:表示每组折线及填充区域的标签
baseline:表示计算基线的方法,包括’zeros’,‘sym’,‘wiggle’和’‘weighted_wiggle’.其中’zero’表示恒定零基线,即简单的堆积图;‘sym’表示对称于零基线,'wiggle’表示最小化平方斜率的总和,'weighted_wiggle’表示执行相同的操作,但权重用于说明每层的大小
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,13)
y_a = np.array([198,215,245,222,200,236,201,253,236,200,266,290])
y_b = np.array([203,236,200,236,269,216,298,333,301,349,360,368])
y_c = np.array([185,205,226,199,238,200,250,209,246,219,253,288])
# 绘制堆积面积图
plt.stackplot(x,y_a,y_b,y_c)
plt.show()
hist参数绘制直方图
该函数常用参数的含义如下。
x:表示x轴的数据,可以为单个数组或多个数组的序列
bins:表示矩形条的个数,默认为10
range:表示数据的范围,若没有提供range参数,则数据范围为(x.min(),x.max())
cumulative:表示是否计算累积频数或频率
histtype:表示直方图的类型,支持’bar’,‘barstacked’,‘step’,‘stepfilled’四种取值,其中’bar’为默认值,代表传统的直方图;‘barstacked’代表堆积直方图,’'step’代表未填充的线条直方图;'stepfilled’代表填充的线条直方图
align:表示矩形条边界的对齐方式,可设置为’left’,‘mid’,‘right’默认为’mid’,
orientation:表示矩形条的摆放方式,默认为’vertical’,即垂直方向
rwidth:表示矩形条宽度的百分比,默认为0.若histtype的值为’step’或’stepfilled’,则直接忽略rwidth参数的值
stacked:表示是否将多个矩形条以堆积形式摆放
import numpy as np
import matplotlib.pyplot as plt
scores = np.random.randint(0,100,50)
# 绘制直方图
plt.hist(scores,bins=8,histtype='stepfilled')
plt.show()
import matplotlib.pyplot as plt
# 生成数据
x = [-10, -3, -2, -1, 0, 1, 2, 3, 10]
plt.boxplot(x)
plt.show()
polar函数
该函数常用参数如下:
theta:表示每个数据点所在射线与极径的夹角
r:表示每个数据点到原点的距离
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
dim_num = 6
data = np.array([[0.40,0.32,0.35,0.30,0.30,0.88],
[0.85,0.35,0.30,0.40,0.40,0.30],
[0.43,0.59,0.30,0.28,0.22,0.30],
[0.30,0.25,0.48,0.85,0.45,0.40],
[0.20,0.38,0.87,0.45,0.32,0.28],
[0.34,0.31,0.38,0.40,0.92,0.28]])
angles = np.linspace(0,2*np.pi,dim_num,endpoint=False)
angles = np.concatenate((angles,[angles[0]]))
data = np.concatenate((data,[data[0]]))
# 维度标签
rrandar_labels = ['研究型(I)', '艺术型(A)', '社会型(S)', '企业型(E)', '传统型(C)', '现实型(R)']
radar_labels= np.concatenate((rrandar_labels,[rrandar_labels[0]]))
# 绘制雷达图
plt.polar(angles,data)
# 设置极坐标的标签
plt.thetagrids(angles*180/np.pi,labels=radar_labels)
# 填充多边形
plt.fill(angles,data,alpha=0.25)
plt.show()