python数据可视化工具 ----matplotlib
- 一、安装matplotlib模块
- 二、设置绘图风格
- 三、画布
- 四、折线图
- 五、垂直柱状图
- 六、水平柱状图
- 七、饼状图
- 八、散点图
- 九、设置x,y轴坐标标题
- 十、添加注释文字
- 十一、设置标题
- 十二、添加图例
- 十三、绘制多子图
- 十四、多个子图添加总标题
- 十五、修改默认属性
- 十六、设置等距坐标刻度
- 十七、设置多种(不等距)刻度
- 十八、保存图片
- 十九、水平线与垂直线
- 二十、对比折线图
- 二十一、组合柱状图
- 二十二、设置刻度线
- 二十三、添加带有箭头注释文本
- 二十四、保存为图片
一、安装matplotlib模块
pip install matplotlib
二、设置绘图风格
# 1.设置绘图风格
plt.style.use('fivethirtyeight')
## 参数可以是文件路径 ...\site-packages\matplotlib\mpl-data\stylelib可参考此路径下文件
## 这个文件夹下,都是存放绘图风格文件,必须是“.mplstyle”结尾文件# 2.查看可选绘图风格
print(plt.style.available)
# ['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic',
# 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark',
# 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-talk', 'seaborn-ticks', 'fast',
# 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster',
# 'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10','dark_background']# 3. linestyle可选项
# '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
点击查看【绘图风格】
三、画布
def figure(num=None, # 如果没有,则自动递增,否则1-N的整数figsize=None, # 默认为rc figure.figsizedpi=None, # 默认为rc figure.dpifacecolor=None, # 默认为rc figure.facecoloredgecolor=None, # 默认为rc figure.edgecolorframeon=True,FigureClass=Figure,clear=False,**kwargs):
# num:唯一标识符
# figsize:画布大小,默认 6.4*4.8
# dpi:每英寸的像素个数,默认100个
# facecolor:画布背景颜色
# edgecolor:画布边框颜色
四、折线图
plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
# x: 表示X坐标的列表, len(x) = len(y)
# y: 表示y坐标的列表
# color: 折线的颜色(折线与坐标点)
# marker: 坐标点的样式
# linestyle: # 折线的样式(实现,虚线,....)
# linewidth: 折线的宽度
# markersize: 坐标点的大小(像素)
import matplotlib.pyplot as pltplt.style.use('classic')
plt.figure()x = [1, 2, 3]
y = [1, 2, 3]plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
# 等价与上写法
plt.flot(x, y, 'go--',linewidth=2, markersize=12)# plt.plot([4, 5, 6]) == plt.plot([0, 1, 2], [1, 2, 3]) x默认使用y的索引
五、垂直柱状图
bar(x, # 柱子的横坐标height, # 柱子的高width=0.8, # 柱子的宽bottom=None, # 柱子在y轴的起始值tick_label=[] # 柱子在x下方的标识*, align='center', # 对齐方式data=None, **kwargs)
import matplotlib.pyplot as plt
import seaborn as snssns.set_style({'font.sans-serif': ['simhei', 'Arial']}) # 设置字体样式
country_name_lst= ['中国', '美国', '印度', '俄罗斯']
population_lst = [14, 3.3, 7.8, 1.46]
plt.bar(range(len(population_lst)), population_lst, color='red', tick_label=country_name_lst, bottom=2)
# plt.bar(range(len(population_lst)), population_lst, color=['r', 'g', 'b'], tick_label=country_name_lst,bottom=1)plt.ylabel("人口(亿)") # 中文可能乱码,使用seaborn 设置字体样式
plt.xlabel("国家")
plt.show()
六、水平柱状图
barh(y, # 柱子的纵坐标width, # 柱子的宽height=0.8, # 柱子的宽left=None, # 每个柱子在x方向的起始坐标*, align='center', **kwargs)
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style({'font.sans-serif':['simhei','Arial']})
name_list = ['中国', '美国', '印度', '俄罗斯']
num_list = [14, 3.3, 14.1, 1.46]
plt.barh([1, 2, 3, 4], num_list, color='red', left=[1, 1, 1, 2], tick_label = name_list)
plt.ylabel("人口(亿)")
plt.ylabel("人口(亿)")
plt.savefig('test2.png', bbox_inches='tight')
plt.show()
七、饼状图
pie(x, # 当总和大于1时,每元素占总和的百分比;当总和小于1时,元素就是值,切会有空白explode=None, # 默认为None,表示每块距离中心点的距离labels=None, # 表示每块标题colors=None, # 表示每块的颜色autopct=None, # 每块中,显示的数字占比pctdistance=0.6, # 每块中,文字距离中心点的距离shadow=False, # 是否添加阴影labeldistance=1.1, # 图例距离圆心的距离startangle=0, # 饼图的起点从x轴逆时针旋转的角度radius=1, # 1 饼图半径长度counterclock=True, wedgeprops=None,textprops=None, center=(0, 0), frame=