iGMAS Innovation Application Center
@School of Geodesy and Geomatics, Wuhan University
Menu
Home
Products
Visualization
Group
Software
Feedback
Sign In
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
GREATers
Return
python matplotlib.pyplot绘制柱形图和簇状柱形图
Create on
2021-01-01T12:46:42Z
written by Wang Qingyun
## 1 matplotlib 画布 在任何绘图之前,我们需要一个figure对象,可以理解成我们需要一张画板才能开始绘图。***figsize***为可选参数,可以通过设置该参数来控制画布得横纵比。 ```python import matplotlib.pyplot as plt xinch = 10 yinch = 5 fig = plt.figure(figsize=(xinch,yinch)) ``` ## 2 matplotlib 简单柱状图 直方图用于统计数据出现的次数或者频率,有多种参数可以调整,下面给出一个示例: ```python import matplotlib.pyplot as plt #数据准备 name_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] num_list = [33, 44, 53, 16, 11, 17, 17, 10] #创建柱状图 #第一个参数为柱的横坐标 #第二个参数为柱的高度 #参数align为柱的对齐方式,以第一个参数为参考标准(可选参数) #参数color为柱形的颜色(可选参数) #参数width为柱形的宽度(可选参数) plt.bar(range(len(name_list)),num_list,align='center',color='deepskyblue',width=0.6) #设置柱的文字说明 #第一个参数为文字说明的横坐标 #第二个参数为文字说明的内容 #fontsize为字号(可选参数) #rotation为字体旋转角度(可选参数) xticks = name_list plt.xticks(range(len(name_list)),xticks,fontsize=10,rotation=40) #设置横坐标的文字说明 plt.xlabel("Type") #设置纵坐标的文字说明 plt.ylabel("Count") #设置标题 plt.title("Count of Type") #绘图 plt.show() #保存图片 plt.savefig('test1.png') ``` [](https://tva1.sinaimg.cn/large/0081Kckwgy1gm8hbmevq0j30hs0dcaa4.jpg) matplotlib中常用颜色调色板如下: [](https://tva1.sinaimg.cn/large/0081Kckwgy1gm8hguczilj30tw0n1n4f.jpg) ## 3 matplotlib 簇状柱状图 簇状柱形图又称为并列柱状图 ```python import matplotlib.pyplot as plt name_list = ['A', 'B', 'C', 'D'] num_list = [10, 15, 16, 28] num_list2 = [10, 12, 18, 26] x = list(range(len(num_list))) total_width, n = 0.8, 2 width = total_width / n plt.bar(x, num_list, width=width, label='1', fc='b') for i in range(len(x)): x[i] += width plt.bar(x, num_list2, width=width, label='2', tick_label=name_list, fc='g') plt.legend() plt.show() pyplot.savefig('test2.png') ``` [](https://tva1.sinaimg.cn/large/0081Kckwgy1gm8ea763w0j30hs0dc0sn.jpg) ## 4 matplotlib 绘制多个子图 **有两种方式,分别给出示例代码** 1. 使用subplots达到绘制多个子图的目的,示例代码如下: ```python import matplotlib.pyplot as plt fig, axes = plt.subplots(2, 2) axes[0,0].bar([1, 2, 3, 4], [1, 2, 3, 4]) axes[0,1].bar([3, 4, 5, 6], [6, 5, 4, 3]) axes[1,0].bar([1, 2, 3, 4], [1, 2, 3, 4]) axes[1,1].bar([3, 4, 5, 6], [6, 5, 4, 3]) plt.tight_layout() #自动调整布局,使标题之间不重叠 plt.show() plt.savefig('test3.png') ``` [](https://tva1.sinaimg.cn/large/0081Kckwgy1gm8e6rtmvjj30hs0dcaa2.jpg) 2. 使用subplot绘制多个子图,示例代码如下: ```python import matplotlib.pyplot as plt plt.subplot(311) plt.bar([1, 2, 3, 4], [1, 2, 3, 4]) plt.subplot(312) plt.bar([3, 4, 5, 6], [6, 5, 4, 3]) plt.subplot(313) plt.bar([1, 2, 3, 4], [1, 2, 3, 4]) plt.tight_layout() #自动调整布局,使标题之间不重叠 plt.show() plt.savefig('test4.png') ``` [](https://tva1.sinaimg.cn/large/0081Kckwgy1gm8h8nubk5j30hs0dcdfw.jpg) #### **参考文章** [Matplotlib绘图时x轴标签重叠的解决办法](https://www.jianshu.com/p/01ed72b2aeee) [python中matplotlib的颜色及形状](https://blog.csdn.net/weixin_43697287/article/details/88876680) [matplotlib绘制两个系列的簇状柱形图](https://blog.csdn.net/weixin_43653733/article/details/107250764) [python 使用 matplotlib.pyplot来画柱状图和饼图](https://www.cnblogs.com/zhhfan/p/9971757.html) [Python--Matplotlib(基本用法)](https://blog.csdn.net/qq_34859482/article/details/80617391)