python进阶(数据分析matplotlib库 一)
1、导入
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] ---------显示中文
mpl.rcParams['axes.unicode_minus'] = False
=======================================================================================
%matplotlib tk --------图像在外部
%matplotlib inline --------图像在内部
2、代码
# 折线图
# plt.plot(x,y)
# label 线条的图例
# color 颜色 颜色英文单词 或者16进制色
# linestyle 线条的形状 --虚线 - 实线 -.
# linewidth 线条的宽度
# marker 标记点形状
# 简写形式 "颜色标记点样式线条样式"
# plt.plot([1,2,3],[50,70,65])
x=np.arange(-3,3,0.5)
y=np.cos(x)
y1=np.sin(x)
plt.figure(figsize=(8,5)) # figure() 图形,可以理解为现实的画板
plt.plot(x,y,label="cos",color="red",linestyle=':',marker='o',linewidth=3)
plt.plot(x,y1,"b|-",label='sin')
plt.legend()
plt.show() # 生成图形
===================================================================================
# 3个人的成绩
# plt.plot()
# plt.xticks() plt.yticks() 设置刻度
# plt.xlabel() plt.ylabel() 设置x轴y轴标签显示
# plt.xlim() plt.ylim() 设置范围
# 在图形化界面中显示
# %matplotlib tk
# 在行内显示
# %matplotlib inline
persons=['Tom','jerry','anne']
scores=[90,88,37]
plt.plot(range(len(persons)),scores)
plt.xticks(range(len(persons)),persons) # 设置刻度 如果写了一个参数,那么就把参数的值当成刻度 ,如果写了两个值,把第一个作为绘图位置,第二个作为显示的效果
override = {
'fontsize' : 'small',
'verticalalignment' : 'center',
'horizontalalignment' : 'left',
'rotation':'horizontal',
"align":"right",
}
plt.xlabel("姓名",override)
plt.ylabel("分数")
plt.ylim(0,120)
plt.title("成绩折线图")
ax=plt.gca()
ax.spines['right'].set_color("none")
ax.spines['top'].set_color("none")
plt.show()
3、实例
实例1:
plt.figure(figsize=(10,6)) ------------ 创建画板对象
inDatas = [600,700,800]
outDatas = [500,900,1000]
index = np.arange(0,len(inDatas)) ----------- 生成x轴的数字字段,建议先生成数字字段再修改为字符串字段
width = 0.2/2
x1_index = index - width/2
x2_index = index + width/2
plt.bar(x1_index,inDatas,width = width,label = '进口数据 单位/美元')
plt.bar(x2_index,outDatas,width = width,label = '出口数据 单位/美元')
plt.xticks(index,['一月份','二月份','三月份']) ------------- 修改x轴的字段名
for i in range(len(inDatas)): -----------标记数据数值
plt.text(x1_index[i]-0.025,inDatas[i]+10,str(inDatas[i]))
for i in range(len(outDatas)):
plt.text(x2_index[i]-0.025,outDatas[i]+10,str(outDatas[i]))
plt.xlabel('季度/月') ---------x,y轴标签
plt.ylabel('数据量')
plt.title('季度数据量') ------------- 标题
ax = plt.gca() -------------- 去掉上下框
ax.spines['top'].set_color('None')
ax.spines['right'].set_color('None')
plt.legend() -------------- 显示图例
plt.show() -------------- 显示图像
实例二:
4、Series 与 DataFrame中的 .plot()方法:
inDatas = [600,700,800]
outDatas = [500,900,1000]
df_data = pd.DataFrame([inDatas,outDatas],index=['进口数据','出口数据'],columns = ['第一季度','第二季度','第三季度'])
df_data.plot(kind = 'bar') # ------------------- DataFrame 对象的 .plot() 方法
plt.show()