python_10_绘制图表
#绘制折线图
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["font.sans-serif"]='SimHei'
plt.rcParams['axes.unicode_minus'] = False
fig = plt.figure()
plt.figure(figsize = (8,6))
plt.subplot(1,1,1)
#指明x和y值
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9])
y = np.array([312,423,564,534,754,765,456,235,432])
#绘图
plt.plot(x,y,color="k",linestyle="dashdot",linewidth=1,marker="o",markersize = 5,label = "注册用户数")
#设置标题
#标题名及其位置
plt.title("xxx公司1-9月用户注册量",loc="center")
#添加数据标签
for a,b in zip(x,y):
plt.text(a,b,b,ha='center',va="bottom",fontsize =10)#设置网格线
plt.grid(True)
#设置图例
plt.legend()
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/plot.jpg")
#绘制柱形图
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["font.sans-serif"]='SimHei'
plt.rcParams['axes.unicode_minus'] = False
fig = plt.figure()
plt.figure(figsize = (8,6))
plt.subplot(1,1,1)#指明x和y值
import numpy as np
x = np.array(["east","north","south","west"])
y = np.array([8552,7541,6587,5784])#绘图
plt.bar(x,y,width=0.5,align="center",label = "任务量")#设置标题
#标题名及其位置
plt.title("全国各分区任务量",loc="center")#添加数据标签
for a,b in zip(x,y):
plt.text(a,b,b,ha='center',va="bottom",fontsize =12)#设置x轴和y轴的名称
plt.xlabel("zone")
plt.ylabel("quanity")
#设置图例显示
plt.legend()
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/bar.jpg")
#绘制簇状图
plt.subplot(1,1,1)#指明x和y值
x = np.array([1,2,3,4])
y1 = np.array([312,423,564,534])
y2 = np.array([152,241,321,235])#绘图
plt.bar(x,y1,width = 0.3,label = "任务量")
plt.bar(x+0.3,y2,width = 0.3,label = "完成量") #相当于把完成量的每个柱子右移0.3#设置标题
#标题名及其位置
plt.title("全国各分区任务量和完成量",loc="center")#添加数据标签
for a,b in zip(x,y1):
plt.text(a,b,b,ha='center',va="bottom",fontsize =12)#设置x轴和y轴的名称
plt.xlabel("zone")
plt.ylabel("quanity")#设置x轴刻度值
plt.xticks(x+0.15,{"east","south","west","north"})#设置网格线
plt.grid(False)#设置图例显示
plt.legend()
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/bar2.jpg")
#绘制堆积图
plt.subplot(1,1,1)#指明x和y值
x = np.array(["east","south","west","north"])
y1 = np.array([312,423,564,534])
y2 = np.array([152,241,321,235])#绘图
plt.bar(x,y1,width = 0.3,label = "任务量")
plt.bar(x,y2,width = 0.3,label = "完成量")#设置标题
#标题名及其位置
plt.title("全国各分区任务量和完成量",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("zone")
plt.ylabel("quanity")#设置网格线
plt.grid(False)#设置图例显示
plt.legend(loc = "upper center",ncol = 2)
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/bar3.jpg")
#绘制条形图
plt.subplot(1,1,1)#指明x和y值
x = np.array(["east","south","west","north"])
y = np.array([312,423,564,534])#绘图
plt.barh(x,height=0.5,width=y,align="center")#设置标题
#标题名及其位置
plt.title("全国各分区任务量",loc="center")#添加数据标签
for a,b in zip(x,y):
plt.text(b,a,b,ha='right',va="center",fontsize =12)#设置x轴和y轴的名称
plt.xlabel("quanity")
plt.ylabel("zone")#设置网格线
plt.grid(False)
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/barh.jpg")
#绘制散点图,用plt库里面的scatter
#plt.scatter(x,y,s,c,marker,linewidths,edgecolors)
#s-表示每个点的面积,即大小;c-每个点的颜色;marker-标记,和折线图中一样;散点的线宽;轮廓的颜色
plt.subplot(1,1,1)
#指明x和y值
x = [5,8,7,5,6,9,11,10,15,14]
y = [1,2,5,4,6,7,9,8,11,13]#绘图
plt.scatter(x,y,marker="o",s=100)#设置标题
#标题名及其位置
plt.title("1-8月a和b的关系图",loc="center")#设置x轴和y轴的名称
plt.xlabel("a")
plt.ylabel("b")#设置网格线
plt.grid(False)
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/scatter.jpg")
#绘制气泡图
plt.subplot(1,1,1)#指明x和y值
x = np.array([4,5,6,7,8,9])
y = np.array([1,2,3,4,5,6])#绘图
colors = y*10 #根据y值的大小生成不同颜色
area = y*100 #根据y值大小生成大小不同的形状plt.scatter(x,y,c = colors , marker="o",s = area)
#设置标题
#标题名及其位置
plt.title("1-8月a和b的关系图",loc="center")#设置数据标签
for a,b in zip(x,y):
plt.text(a,b,b,ha = 'center', va = "center", fontsize =10,color = "white")
#设置x轴和y轴的名称
plt.xlabel("a")
plt.ylabel("b")#设置网格线
plt.grid(False)
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/scatter2.jpg")
#绘制面积图,与折线图类似,用plt库里面的stackplot
#plt.stackplot(x,y,labels,colors)plt.subplot(1,1,1)
#指明x和y值
x = np.array([1,2,3,4,5,6,7,8,9,10])
y1 = np.array([1,2,5,4,6,7,9,8,11,13])
y2 = np.array([2,4,6,4,6,7,9,8,11,13])#绘图
labels = ["a","b"]
plt.stackplot(x,y1,y2,labels = labels)#设置标题
#标题名及其位置
plt.title("1-10月a,b值",loc="center")#设置x轴和y轴的名称
plt.xlabel("月份")
plt.ylabel("a,b值")
plt.legend()
#设置网格线
plt.grid(False)
#保存图表到本地
plt.savefig("C:/Users/jsjilu/Desktop/stackplot.jpg")
#绘制树地图
#经常表示同一等级中不同类别的占比关系,使用squarify库
#要先安装库
#pip install squarify
#在anaconda prompt程序中输入即可
import squarify
#指定每一块的大小
size = np.array([0.1,0.2,0.3,0.4])
#指定每一块的文字标签
zhongwen = np.array(["a","b","c","d"])
#指定每一块的数值标签
rate = np.array(["10%","20%","30%","40%"])#指定每一块的颜色
colors = ['steelblue','#9999ff','red','green']#绘图
plot = squarify.plot(sizes = size,
label = zhongwen,
color = colors,
value = rate,
edgecolor = 'white',
linewidth = 3)
#设置标题大小
plt.title('xx分布',fontdict = {'fontsize':12})#去除坐标轴
plt.axis('off')#去除上边框和右边框的刻度
plt.tick_params(top = 'off',right = 'off')#保存到本地
plt.savefig("C:/Users/jsjilu/Desktop/squarify.jpg")
#绘制雷达图,用的是polar方法
#plt.polar(theta,r,color,marker,linewidth)
#每一点在极坐标中的角度,半径,连接每个点间线的颜色,每点的标记物,线宽度
import numpy as np
import matplotlib.pyplot as plt
# 使用ggplot的绘图风格,这个类似于美化了,
# 可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
# 构造数据
values = [2.6,2.1,3.4,3,4.1]
feature = ['个人能力','QC知识','解决问题能力','服务质量意识','团队精神']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(values), endpoint=False)
# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 绘图
fig=plt.figure()
# 设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
# 绘制折线图
ax.plot(angles, values, 'o-', linewidth=2)
# 填充颜色
ax.fill(angles, values, alpha=0.25)
# 设置图标上的角度划分刻度,为每个数据点处添加标签
ax.set_thetagrids(angles * 180/np.pi, feature)
# 设置雷达图的范围
ax.set_ylim(0,5)
# 添加标题
plt.title('活动前后员工状态表现')
# 添加网格线
ax.grid(True)
#保存到本地
plt.savefig("C:/Users/jsjilu/Desktop/polarplot.jpg")
# 绘制箱型图,使用boxplot,反应数据的离散情况
# plt.boxplot(x,vert,width,label)
# 待绘图源数据;箱型图方向(true纵);图宽;标签
plt.subplot(1,1,1)
y1 = np.array([866,2335,11000,6482,6120,1605,3813,4428,4631])
y2 = np.array([433,1167,2855,3241,3060,802,1906,2214,2315])
x = [y1,y2]#绘图
labels = ["注册人数","激活数量"]
plt.boxplot(x,labels = labels,vert = True,widths = [0.2,0.5])#设置标题
plt.title("xxx公司1-9月注册和激活人数",loc = "center")
#网格线
plt.grid(False)
plt.savefig("C:/Users/jsjilu/Desktop/boxflot.jpg")
#绘制饼图,用pie
#plt.pie(x,explode,labels,colors,autopct,pctdistance,shadow,labeldistance,startangle,radius,conunterclock,wedgeprops,textprops,center,frame)
#待绘图数据,每一块距离圆心距离,每一块的标签,颜色,百分比格式,标签距离,是否有阴影,索引距离,初始角度,半径,是否逆时针显示,内外边界属性,文本相关属性,中心位置,是否显示饼图背后的图框
plt.subplot(1,1,1)
x = np.array([0.924,
0.036,
0.005,
0.003,
0.032
])labels =["一级白砂糖",
"绵白糖",
"原糖",
"糖制糖",
"红糖"]
explode = [0.05,0,0,0,0] #让第一块离圆心远一点
labeldistance = 1.1plt.pie(x,labels = labels,autopct = '%.0f%%',shadow = True,
explode = explode,radius =1.0,labeldistance = labeldistance)#设置标题
plt.title("不同食糖占比",loc = "center")
#保存
plt.savefig("C:/Users/jsjilu/Desktop/futures/pie1.jpg")
#绘制圆环图,用于表示同一层级不同类别之间的占比关系,使用的也是pie
plt.subplot(1,1,1)
x1 = np.array([8566,5335,7310,6482])
x2 = np.array([4283,2667,3655,3241])labels =["east","south","west","north"]
plt.pie(x1,labels = labels,radius =1.0,wedgeprops = dict(width =0.3,edgecolor = 'w'))
plt.pie(x2,radius =0.7,wedgeprops = dict(width =0.3,edgecolor = 'w'))
#添加注释
plt.annotate("完成量",xy =(0.35,0.35),xytext = (0.7,0.45),
arrowprops = dict(facecolor = 'black',arrowstyle = '->'))
plt.annotate("任务量",xy =(0.75,0.20),xytext = (1.1,0.20),
arrowprops = dict(facecolor = 'black',arrowstyle = '->'))#设置标题
plt.title("xx各区域任务量和完成量占比",loc = "center")
#保存
plt.savefig("C:/Users/jsjilu/Desktop/pie2.jpg")
#绘制热力图,将某一事物的响应度反应在图表上,可以快速发现需要重点关注的区域,使用imshow
# plt.imshow(x,cmap)
# 数据需要是矩阵形式,配色方案cmap 所有可选值都封装在plt。cm里面,输入plt.cm.然后按Tab即可
#几个相关指标之间的相关性
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)#注意导入库,如果显示未定义,就import
import itertools#将数值显示在指定位置
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.savefig("C:/Users/jsjilu/Desktop/imshow.jpg")
#番外 itertools, 用于迭代的好用工具
import itertools# itertools.count()
l = [1,2,3,4,5]
c = itertools.repeat(l, 5) #迭代五次for i in c:
print(i)
import itertools
# itertools.count()
l = [1,2,3,4,5]
c = itertools.accumulate(l)print(c)
for i in c:
print(i)#结果不出意料,accumulate()仍然返回的是一个迭代器,我们给它传了一个list,在for循环中遍历打印的时候发现,它把其中的数值做了累加操作。(迭代第一个数,就是前一个数的和,迭代到第二个数时,就是前两个数的和
import itertools
# itertools.count()
d = {'a': 1, 'b': 2, 'c': 3}
c = itertools.accumulate(d)print(c)
for i in c:
print(i)#如果传入的是dict对象,那么会累加迭代dict的key
import itertools
# itertools.count()
l = [1, 2, 3, 4, 5]
t = (1, 2, 3, 4, 5)
s = 'abcdefg'
c = itertools.chain(l, t, s)print(c)
for i in c:
print(i)#chain()类是非常实用的,参数可以传入任意个数序列,而且只要是序列即可,不限定序列的数据类型。 比如,我想一起迭代list, tuple, str三个序列,实用itertools.chain()轻松实现
python_10_绘制图表相关推荐
- matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等
matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...
- 用python绘制柱状图标题-使用Python绘制图表大全总结
在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib. Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效:mat ...
- python能绘制统计图吗-使用Python绘制图表大全总结
在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib. Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效:mat ...
- [codeigniter]CI中使用pChart绘制图表,已测通过
因为一个codeigniter开发的项目上要用到图表.FusionChart是flash技术,在某些情况下可能造成无法使用(如ipad).因此不禁想起了之前用Pchart做的图表项目. 但是毕竟是在C ...
- 如何在ASP.NET中用OWC绘制图表
一.概述 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...
- 【python】 读取Excel文件并绘制图表
依赖的包: 1.xlrd 2.matplot 3.numpy 读取excel文件并绘制图表 代码如下: 点击(此处)折叠或打开 import matplotlib.pyplot as plt impo ...
- pyecharts学习(part1)--绘制图表的三种方式
学习笔记,仅供参考,有错必究 文章目录 pyecharts学习 绘制图表的三种方式 绘制的图表生成HTML jupyter notebook 内嵌展示 pyecharts生成图片 pyecharts学 ...
- 一个详尽的面向 SAP UI5 初学者的教程 - 如何在 SAP UI5 中绘制图表 Chart
这是 Jerry 2021 年的第 65 篇文章,也是汪子熙公众号总共第 342 篇原创文章. 观沧海 曹操 东临碣石,以观沧海. 水何澹澹,山岛竦峙. 树木丛生,百草丰茂. 秋风萧瑟,洪波涌起. 日 ...
- 在微信小程序中绘制图表(part2)
本期大纲 1.确定纵坐标的范围并绘制 2.根据真实数据绘制折线 相关阅读: 在微信小程序中绘制图表(part1) 在微信小程序中绘制图表(part3) 关注我的 github 项目 查看完整代码. 确 ...
- 前端绘制绘制图表_绘制我的文学风景
前端绘制绘制图表 Back when I was a kid, I used to read A LOT of books. Then, over the last couple of years, ...
最新文章
- NAT技术解决了IPv4地址短缺的问题,假设内网的地址数是m,而外网地址数n,若mn,则这种技术叫做(66),若mn,且n=1,则这种技术这叫做(67)。【答案】A C
- 旷视张祥雨:神经网络架构设计新思路
- [Gamma阶段]第十次Scrum Meeting
- nacos如何做配置中心?自带自动刷新配置功能?这一篇文章让你明明白白!
- jqplot学习笔记
- 动能如何转化成力_带式污泥压滤机的压力如何为液体的流动提供动能?
- Vue.js项目新建及目录结构分析
- 2017年总结的前端文章——CSS高级技巧汇总
- SparkSQL 内置函数的使用(JAVA与Scala版本)
- 关于Windows消息钩子的理解与测试项目
- 博士考试考完了,庆祝一下
- 外设键盘_记得那个被称为‘顶级外设’的国产品牌吗,现在推出这样一把键盘...
- deepin中自定义安装的软件如何加入到启动器
- 情感计算在淘宝UGC的应用
- ACM ICMR 2021雷达目标检测挑战赛(ROD2021)
- redis的key_value截图深入学习
- 咸鱼团队的第一次SCRUM冲刺
- 趣谈网络协议笔记 - 通信协议综述
- steam的游戏id怎么查?
- windows下管理员用户与标准用户切换过程中的坑
热门文章
- Java中三元运算符
- clk_get、clk_enable和clk_get_rate函数
- symbian学习笔记
- JavaSE笔记 30天学Java打卡 Day03
- python斗地主游戏源码_Python实现的斗地主引擎
- Unity资源加载之Assetbundle(一)
- 什么是“理解”?如何在人工智能中定义“理解”?(what is understanding ?)
- 黄山5日游 最省钱的线路指南
- 帝国cms 制作网站地图
- js实现addClass、removeClass方法