python绘制常用图表(中)

一、绘制柱形图

绘制柱形图:
plt.bar(x,height,width = 0.8,bottom = None,align = ‘center’,color,edgecolor)
x:表示在什么位置显示柱形图
height表示每根柱子的高度
width表示每根柱子的宽度
bottom表示每根柱子的底部位置
align表示柱子的位置与x值的关系
color柱子颜色
edgecolor柱子边缘颜色

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")

# 普通柱形图实例
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array(['东区','南区','西区','北区'])
y = np.array([8556,6482,5335,7301])
# 绘图
plt.bar(x,y,width=0.5,align='center',label = '任务量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务量')
# 显示图例
plt.legend()
# 显示图表
plt.show()

# 簇状柱形图实例
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array([1,2,3,4])
y1 = np.array([8556,6482,5335,7301])
y2 = np.array([4283,2667,3655,3241])
# 绘图
plt.bar(x,y1,width=0.3,label = '任务量')
plt.bar(x+0.3,y2,width=0.3,label = '完成量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y1):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
for a,b in zip(x+0.3,y2):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务情况')
# 设置x轴刻度线
plt.xticks(x+0.15,['东区','南区','西区','北区'])
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend()
# 显示图表
plt.show()

# 堆积柱形图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array(['东区','南区','西区','北区'])
y1 = np.array([8556,6482,5335,7301])
y2 = np.array([4283,2667,3655,3241])
# 绘图
plt.bar(x,y1,width=0.3,label = '任务量')
plt.bar(x,y2,width=0.3,label = '完成量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y1):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
for a,b in zip(x,y2):
    plt.text(a,b,b,ha='center',va='top',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务情况')
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend(loc = 'upper center',ncol = 2)
# 显示图表
plt.show()

效果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、绘制气泡图

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")

# 绘制散点图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array([5.5,6.6,6,8.1,19.5,22.4,28.3,28.9])
y = np.array([2.38,3.85,4.41,5.67,5.44,6.03,8.15,6.87])
# 绘图
# 根据y值的大小产生不同的颜色
colors = y*10
# 根据y值的大小产生不同的大小形状
area = y*100
plt.scatter(x,y,c=colors,marker='o',s = area)
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='center',fontsize = 12,color = 'white')

# 设置x轴y轴的名称
plt.xlabel('平均气温')
plt.ylabel('啤酒销量')
# 设置网格线
plt.grid(True)
# 显示图表
plt.show()

效果如下:
在这里插入图片描述

三、绘制热力图

绘制热力图
plt.imshow(x,cmap)
x表示待绘图的数据,需要是矩阵形式
cmap配色方案,用来表明图表渐变的主题色

import numpy as np
import matplotlib.pyplot as plt
import itertools
import squarify
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")

# 几个相关指标之间的相关性
cm = np.array([[1,0.082,0.031,-0.0086],
              [0.082,1,-0.063,0.062],
              [0.031,-0.09,1,0.026],
              [-0.0086,0.062,0.026,1]])
# 设置配色
cmap = plt.cm.cool()
plt.imshow(cm,cmap=cmap)
# 显示右边的颜色条
plt.colorbar()
# 设置x轴y轴的刻度标签
classes = ['负债率','信贷数量','年龄','家属数量']
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks,classes)
plt.yticks(tick_marks,classes)
# 将数值显示在指定位置
for i,j in itertools.product(range(cm.shape[0]),range(cm.shape[1])):
    plt.text(j,i,cm[i,j],horizontalalignment = 'center')
# 设置网格线
plt.grid(False)
# 显示图表
plt.show()

效果如下:
在这里插入图片描述

三、绘制水平线和垂直线

绘制水平线和垂直线
目的:用来做参考对比
plt.axhline(y,xmin,xmax)
plt.axvline(x,ymin,ymax)

y/x 画水平线/垂直线时的横/纵坐标
xmin,xmax水平线的起点和终点
ymin,ymax垂直线的起点和终点

import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")

# 建立坐标系
plt.subplot(1,2,1)
# 绘制一条y等于2且起点是0.2,终点是0.6的水平线
plt.axhline(y=2,xmin=0.2,xmax=0.6)

plt.subplot(1,2,2)
# 绘制一条x等于2且起点是0.2,终点是0.6的水平线
plt.axvline(x=2,ymin=0.2,ymax=0.6)
plt.show()

效果如下:
在这里插入图片描述
以上内容仅供参考学习,如有侵权请联系我删除!

扫描二维码关注公众号,回复: 9406261 查看本文章
发布了69 篇原创文章 · 获赞 7 · 访问量 3345

猜你喜欢

转载自blog.csdn.net/weixin_45366499/article/details/104236931