为避免中文显示出错,需导入matplotlib.pylab库
保存图片时,dpi为清晰度,数值越高越清晰.请注意,函数结尾处,必须加plt.show(),不然图像不显示.
绘制流程与绘制不含子图的图像一致,只需注意一点:创建画布.
合理调整figsize、dpi,可避免出现第一幅图横轴名称与第二幅图标题相互遮盖的现象.
openpyxl可以使用以下图表:
图表至少由一系列一个或多个数据点组成.系列本身对单元格范围的引用组成.
其他锚点是可能的.请参考 openpyxl.drawing.spreadsheet_drawing 来获取更多信息.
面积图类似于折线图,不同之处在于填充了绘制线下方的区域.通过将分组设置为"标准","堆叠"或"百分比堆叠",可以使用不同的变体.默认为"标准".
您还可以创建三维面积图
这将生成一个简单的三维面积图,其中第三个轴可用于替换图例:
在条形图中,值被绘制为水平条或垂直列
这将产生四个图表,说明各种可能性.
您还可以创建三维条形图
这将生成一个简单的三维条形图.
note:有兴趣的小伙伴可以帮忙看下在 office下的现象
①环境
系统:windows10
使用的库:matplotlib,numpy
import numpy as np
numpy.random
rand(d0,?d1,?...,?dn) ?
randn(d0,?d1,?...,?dn)查询结果为标准正态分布
randint(low,high,size) ?
生成low到high之间(半开区间 [low, high)),size个数据
random_integers(low,high,size) ?
生成low到high之间(闭区间 [low, high)),size个数据
In [11]: x
x x轴
y y轴
s ? 圆点面积
c ? 颜色
marker ?圆点形状
alpha ? 圆点透明度???#其他图也类似这种配置
x=np.random.randn(N)
y=np.random.randn(N)
plt.show()
x=np.linspace(-10000,10000,100) #将-10到10等区间分成100份
plt.plot(x,y)
折线图使用plot函数
x=np.random.randint(10,1000,N)
index=np.arange(N)
orientation设置横向条形图
m1=100
# #双变量的直方图# #颜色越深频率越高# #研究双变量的联合分布
#双变量的直方图#颜色越深频率越高#研究双变量的联合分布
#设置x,y轴比例为1:1,从而达到一个正的圆
#labels标签参数,x是对应的数据列表,autopct显示每一个区域占的比例,explode突出显示某一块,shadow阴影
labes=['A','B','C','D']
plt.axes(aspect=1)#labels标签参数,x是对应的数据列表,autopct显示每一个区域占的比例,explode突出显示某一块,shadow阴影
plt.pie(x=fracs,labels=labes,autopct="%.0f%%",explode=explode,shadow=True)
#sym 点的形状,whis虚线的长度
以下默认所有的操作都先导入了numpy、pandas、matplotlib、seaborn
第一段:折线图
折线图可以用来表示数据随着时间变化的趋势
Matplotlib
plt.plot(x,?y)
Seaborn
df?=?pd.DataFrame({'x':?x,?'y':?y})
sns.lineplot(x="x",?y="y",?data=df)
第二段:直方图
直方图是比较常见的视图,它是把横坐标等分成了一定数量的小区间,然后在每个小区间内用矩形条(bars)展示该区间的数值
第三段:垂直条形图
条形图可以帮我们查看类别的特征.在条形图中,长条形的长度表示类别的频数,宽度表示类别.
①.plt.show()
第四段:水平条形图
第五段:饼图
第六段:箱线图
可以帮我们分析出数据的差异性、离散程度和异常值等.
第七段:热力图
力图,英文叫 heat map,是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值.通过颜色就能直观地知道某个位置上数值的大小.
通过 seaborn 的 heatmap 函数,我们可以观察到不同年份,不同月份的乘客数量变化情况,其中颜色越浅的代表乘客数量越多
第八段:散点图
散点图的英文叫做 scatter plot,它将两个变量的值显示在二维坐标中,非常适合展示两个变量之间的关系.
第九段:蜘蛛图
蜘蛛图是一种显示一对多关系的方法,使一个变量相对于另一个变量的显著性是清晰可见
十、二元变量分布
二元变量分布可以看两个变量之间的关系
十第一段:面积图
面积图又称区域图,强调数量随时间而变化的程度,也可用于引起人们对总值趋势的注意.
堆积面积图还可以显示部分与整体的关系.折线图和面积图都可以用来帮助我们对趋势进行分析,当数据集有合计关系或者你想要展示局部与整体关系的时候,使用面积图为更好的选择.
十第二段:六边形图
六边形图将空间中的点聚合成六边形,然后根据六边形内部的值为这些六边形上色.
原文至:
用matplotlib包的barh函数绘制的,大致布局已经很相似了
import matplotlib.pyplot as plt
from matplotlib import cm
label = ['a','b','c','d','e','f']
idx = np.arange(len(x))
color = cm.jet(np.array(x)/max(x))
plt.barh(idx, x, color=color)
plt.grid(axis='x')
plt.xlabel('Revenues Earned')
plt.ylabel('Salespeople')
如何用python绘制简单条形图呢?这里离不开matplotlib的使用.
条形图是数据可视化图形中很基础也很常用的一种图,简单解释下:条形图也叫长条图(英语:bar chart),亦称条图(英语:bar graph)、条状图、棒形图、柱状图、条形图表,是一种以长方形的长度为变量的统计图表.长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析.长条图亦可横向排列,或用多维方式表达.
那么一个普通的条形图是长什么样子的呢?
当!当!当!就是下图的这个样子:
图先亮出来啦,此时此刻呢研究这个图是怎么画的吧,先看一下原数据长什么样子:
实际画图的流程和画折线图很相近,只是用到的画图函数不一样,绘制条形图的函数plt.bar():
由于这只是最简单的一个条形图,实际上条形图的函数plt.bar()还有不少可以探索的参数设置,和对折线图函数plt.plot()的探索差不多,有兴趣的孩子可以自己去进行探索哦.
按照条形长短进行排序展示的条形图
当然也可以有其他的设置,比如说上图中的线条高低参差不齐,这是因为x轴的数据是按照学校名称进行排序的,那么可不可以按照分数的高低进行排序呢?也就是让所有的长方形按照从高到矮或者从矮到高的顺序进行排列?
把原数据逆序排序后截取前十名数据赋值给data_yuwen,作为新的数据源传入画图函数plt.bar(),画出来的图自然就不一样了.
先看一眼数据长什么样子:
根据这个数据源绘制出的图形如下,由于用来画图的数据进行了降序排序操作,所以生成条形图的条也会进行降序排序展示:
很多时候,我们常见的条形图还有另一种展现形式,那就是横向的条形图,比较火的那种动态条形图绝大多数也都是横向的条形图,那么横向的条形图如何绘制呢?
理解plt.bar()主要参数
其实也不难,只要清楚plt.bar()函数中主要参数的作用就可以了!条形图函数中有五个主要参数,分别是x,height,width,bottom,orientation.其中x控制的是每个条在x轴上位置,height控制的是每个条的长度,width控制的是每个条的宽度,bottom控制的是每个条在y轴方向的起始位置,orientation控制的是条形的方向,是纵向还是横向,默认是纵向的.
通过一个小例子理解下这几个参数的作用:
上边的几行代码输出的图形如下:
对比着代码和实际输出的条形图,各个主要参数的作用是不是一目了然啦?
横向条形图
理解了这几个参数作用后,纵向的条形图转换成横向的条形图就没什么难度了!
需要设置所有条形在x轴的位置都为0,也就全部从最左侧开始画条形;由于是横向条形图,所以实际上条的宽度显示的是数据大小,将width参数设置成原数据中的语文成绩;bottom控制每个条在y轴方向的起始位置,设置bottom=range(10)设置每个条形在y轴的起始位置各不相同避免有条形重叠;height控制的是每个条在y轴方向上的长度,条形图横向设置后,在y轴上的长度失去了衡量数据的意义,所以直接设置一个常数即可;最后设置条形的方向为横向,即orientation="horizontal".
温馨提示:数据和标签一定要匹配,即plt.bar()重点的数据要和plt.yticks()中提取出来的标签一一对应,一旦不匹配,整个图展现的结果就是一个错误的结果!
上述代码生成的条形图如下:
感觉上边这种生成横向条形图的方式有点点绕,和人们的习惯认知有点不大一样,难道画一个横向条形图就非得转变自己的习惯认知这么反人类吗?
当然不是的,实际上有更简单的方法绘制一个横向条形图,之所以没有一开始就直接用这种简单的方法,也是为了让大家体会下条形图参数的灵活设置而已,而且如果比较绕的方法都能理解了,简单的方法理解和运用起来就更没有难度了啊!
不卖关子了,我们来认识下和plt.bar()函数类似的plt.barh()函数.
plt.barh()函数是专门绘制水平条形图的函数,主要的参数有:
效果图:
和用plt.bar()函数绘制的横向条形图一毛一样对不对?以后有需求绘制横向条形图,尽量用plt.barh()函数吧,毕竟它是专门绘制这种类型图的,简单好用.
然而实际工作中对于条形图的需求不只是这些,比如例子中只是对各个学校语文成绩的展示,有时候需要各个学科的成绩同时展现在一幅条形图中,有时候也需要绘制堆积条形图对各学科的成绩以及总成绩进行展示,这些图又该如何绘制呢?其实只要理解了各个参数的含义,绘制这些图也不在话下,至于具体怎么画,且看下回分解啊!