【Matplotlib】学术论文黑白柱状图绘制
学术论文黑白柱状图绘制
- 一. 前言
- 二. 柱形图绘制
- 2.1 基础绘制
- 2.2 两组数据并列绘制
- 2.2 两组数据堆叠绘制
一. 前言
在学术论文中,当涉及黑白打印时 ,彩色的柱状图往往很难有效地区分,因此我们需要绘制黑白柱状图,并通过添加不同的条纹来实现柱状图的区分。
接下来我将以下面这组数据为例,绘制几款比较常见的柱状图。
# 数据代表一年12个月小明和小刚的智商(纯属捏造)
x = [for i in range(1,13)]
xiaoming = [111,124,101,132,127,114,140,135,104,120,101,118]
xiaogang = [132,142,121,101,114,135,126,116,105,131,97,102]
二. 柱形图绘制
2.1 基础绘制
import numpy as np
import matplotlib.pyplot as plt# 数据代表一年12个月小明和小刚的智商(纯属捏造)
x = [i for i in range(1,13)]
xiaoming = [111,124,101,132,127,114,140,135,104,120,101,118]
xiaogang = [132,142,121,101,114,135,126,116,105,131,97,102]plt.rcParams['font.family'] = ['Times New Roman']
fig,ax = plt.subplots(1,1,figsize=(7,4.5),dpi=200)
width = 0.35 # 柱子宽度#字体设置
label_font = {'weight':'bold','size':14,'family':'SimHei'
}rects = ax.bar(x, xiaoming, width ,ec='k',color='white', #x代表刻度值范围lw=.8,hatch='//')ax.tick_params(axis='x',direction='out',length=5,width=1.5,labelsize=11,bottom=True)#x轴刻度设置
ax.set_xlabel('月份',fontdict=label_font) #x轴名称
#set_xticks(x)和set_xticklabels(x)一般一起使用
ax.set_xticks(x) #设置显示刻度标签的位置,最好与ax.bar的第一个参数一致
ax.set_xticklabels(x)#设置刻度值对应的标签,可以是字符串型ax.tick_params(axis='y',direction='out',length=5,width=1.5,labelsize=11,bottom=False) #y轴刻度设置
ax.set_ylabel('智商',fontdict=label_font) #y轴名称
ax.set_ylim(ymin = 90,ymax = 150) #y轴刻度范围
ax.set_yticks(np.arange(90,151,10)) #设置显示刻度标签的位置
ax.set_yticklabels(np.arange(90,151,10))#设置刻度值对应的标签,可以是字符串型ax.axhline(0, color='black',alpha=0.5) #绘制y=0的线
ax.legend(loc='best',markerscale=10,fontsize=12) #设置图例# 添加数据标签
def autolabel(rects):for rect in rects:height = rect.get_height()if height>0:ax.annotate('{}'.format(height),xy=(rect.get_x() + rect.get_width() / 2, height),xytext=(0, 3), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')else:ax.annotate('{}'.format(height),xy=(rect.get_x() + rect.get_width() / 2, height),xytext=(0, -13), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')
autolabel(rects)
fig.tight_layout()
#保存图片
#plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\barplot05.png',dpi=600,bbox_inches = 'tight')
ax.bar
函数中的hatch=
参数即可设置柱形图的条纹,包括\,|,/,.,o,+,-,x
等。
2.2 两组数据并列绘制
import numpy as np
import matplotlib.pyplot as plt# 数据代表一年12个月小明和小刚的智商(纯属捏造)
x = [i for i in range(1,13)]
xiaoming = [111,124,101,132,127,114,140,135,104,120,101,118]
xiaogang = [132,142,121,101,114,135,126,116,105,131,97,102]#plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['font.family'] = ['Times New Roman']
fig,ax = plt.subplots(1,1,figsize=(7,4.5),dpi=200)
width = 0.35 # 柱子宽度#字体设置
label_font = {'weight':'bold','size':14,'family':'SimHei'
}
legend_font = {'weight':'bold','size':10,'family':'SimHei'
}rects1 = ax.bar(x = [i - 0.2 for i in x], height = xiaoming, width = width ,ec='k',color='white', lw=.8, label = "小明", hatch='//')
rects2 = ax.bar(x = [i + 0.2 for i in x], height = xiaogang, width = width ,ec='k',color='white', lw=.8, label = "小刚", hatch='xxxxxx')ax.tick_params(axis='x',direction='out',length=5,width=1.5,labelsize=11,bottom=True)#x轴刻度设置
ax.set_xlabel('月份',fontdict=label_font) #x轴名称
#set_xticks(x)和set_xticklabels(x)一般一起使用
ax.set_xticks(x) #设置显示刻度标签的位置,最好与ax.bar的第一个参数一致
ax.set_xticklabels(x)#设置刻度值对应的标签,可以是字符串型ax.tick_params(axis='y',direction='out',length=5,width=1.5,labelsize=11,bottom=False) #y轴刻度设置
ax.set_ylabel('智商',fontdict=label_font) #y轴名称
ax.set_ylim(ymin = 90,ymax = 150) #y轴刻度范围
ax.set_yticks(np.arange(90,151,10)) #设置显示刻度标签的位置
ax.set_yticklabels(np.arange(90,151,10))#设置刻度值对应的标签,可以是字符串型ax.axhline(0, color='black',alpha=0.5) #绘制y=0的线
ax.legend(loc='best',markerscale=8,fontsize=10,prop=legend_font) #设置图例# 添加数据标签
def autolabel(rects):for rect in rects:height = rect.get_height()if height>0:ax.annotate('{}'.format(height),xy=(rect.get_x() + rect.get_width() / 2, height),xytext=(0, 3), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')else:ax.annotate('{}'.format(height),xy=(rect.get_x() + rect.get_width() / 2, height),xytext=(0, -13), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
fig.tight_layout()
#保存图片
#plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\barplot05.png',dpi=600,bbox_inches = 'tight')
2.2 两组数据堆叠绘制
import numpy as np
import matplotlib.pyplot as plt# 数据代表一年12个月小明和小刚的智商(纯属捏造)
x = [i for i in range(1,13)]
xiaoming = [111,124,101,132,127,114,140,135,104,120,101,118]
xiaogang = [132,142,121,101,114,135,126,116,105,131,97,102]#plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['font.family'] = ['Times New Roman']
fig,ax = plt.subplots(1,1,figsize=(7,4.5),dpi=200)
width = 0.35 # 柱子宽度#字体设置
label_font = {'weight':'bold','size':14,'family':'SimHei'
}
legend_font = {'weight':'bold','size':10,'family':'SimHei'
}rects1 = ax.bar(x, height = xiaoming, width = width ,ec='k',color='white', lw=.8, label = "小明", hatch='//')
rects2 = ax.bar(x, height = xiaogang, width = width ,ec='k',color='white', lw=.8, label = "小刚", hatch='xxxxxx',bottom = xiaoming)ax.tick_params(axis='x',direction='out',length=5,width=1.5,labelsize=11,bottom=True)#x轴刻度设置
ax.set_xlabel('月份',fontdict=label_font) #x轴名称
#set_xticks(x)和set_xticklabels(x)一般一起使用
ax.set_xticks(x) #设置显示刻度标签的位置,最好与ax.bar的第一个参数一致
ax.set_xticklabels(x)#设置刻度值对应的标签,可以是字符串型ax.tick_params(axis='y',direction='out',length=5,width=1.5,labelsize=11,bottom=False) #y轴刻度设置
ax.set_ylabel('智商',fontdict=label_font) #y轴名称
ax.set_ylim(ymin = 90,ymax = 300) #y轴刻度范围
ax.set_yticks(np.arange(90,301,50)) #设置显示刻度标签的位置
ax.set_yticklabels(np.arange(90,301,50))#设置刻度值对应的标签,可以是字符串型ax.axhline(0, color='black',alpha=0.5) #绘制y=0的线
ax.legend(loc='best',markerscale=8,fontsize=10,prop=legend_font) #设置图例# 添加数据标签
def autolabel(rects1,rects2):for i in range(len(rects1)):rect1 = rects1[i]rect2 = rects2[i]height = rect1.get_height()+rect2.get_height()if height>0:ax.annotate('{}'.format(height),xy=(rect2.get_x() + rect2.get_width() / 2, height),xytext=(0, 3), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')else:ax.annotate('{}'.format(height),xy=(rect2.get_x() + rect2.get_width() / 2, height),xytext=(0, -13), # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom')
autolabel(rects1,rects2)
fig.tight_layout()
#保存图片
#plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\barplot05.png',dpi=600,bbox_inches = 'tight')
在ax.bar
函数中设置 bottom
参数 ,表示数据从哪个数开始绘制,该参数的长度应该与将绘制数据的长度相同。
在此案例中,我设置第二个柱形图的bottom
为第一个柱形图的数据,表示第二个柱形图堆叠在第一个柱形图上绘制。若有第三个柱形图想要堆在第二个柱形图上,则需要将前两个柱形图的值相加,可以用如下表达式:[x + y for x, y in zip(xiaoming, xiaogang)]
,第四个、第五个以此类推。
【Matplotlib】学术论文黑白柱状图绘制相关推荐
- matplotlib折线图与柱状图绘制在一起
import seaborn as sns import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # ...
- python可视化(案例)高颜值图的复现(学术论文、商业周刊)
前文的两个案例虽用的都是虚拟数据集,但都有一定的针对性,案例 水果分类(香蕉.苹果大战) 中,讨论了一个分类问题,并对散点图.直方图.箱线图和等比例子图的应用做了探讨:案例 多元线性回归 中,讨论了一 ...
- 怎么用python找论文_如何利用Python绘制学术论文图表方法
论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...
- 中文论文黑白矢量图绘制
中文论文黑白矢量图绘制 场景:python matplotlib生成的图片的保存格式不包含出版社所要求的(.emf和.wmf格式),如何将生成的图片转化为该格式? 将文件保存为.svg格式 使用Cor ...
- python的论文图表_如何利用Python绘制学术论文图表方法
论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...
- 学术论文模式图、统计图绘制
开课背景 我们经常在文献中看到非常漂亮的插图,相信你也曾和我一样想过:这样的插图是怎样制作出来的呢?我能不能也制作出这样的插图呢?其实,插图制作这项技能并非"高深莫测",它在国外已 ...
- [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例
<娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...
- 【数据分析】近10年学术论文的数据分析!
作者:李攀,北航硕士,Datawhale优秀学习者 arXiv是重要的学术公开网站,也是搜索.浏览和下载学术论文的重要工具.它涵盖的范围非常广,涉及物理学的庞大分支和计算机科学的众多子学科,如数学.统 ...
- 参考文献的序号怎么对齐_学术论文发表写作格式、具体要求和参考文献的要求模板...
下面是杂志社这边的期刊论文整篇论文的具体格式要求.格式模板.看到最后有惊喜哟!一.论文篇幅: 通常3000-8000字,论文必须包含200字左右的中.英文摘要及3-4个关键词.二.论文格式: (一)题 ...
最新文章
- python打开excel表格-如何从python中用excel打开excel工作表?
- Java script第二课
- AS 自定义 Gradle plugin 插件 案例 MD
- vue3 创建路由「vue-router 4.x 的使用」
- POJ3287(BFS水题)
- linux SU不用密码,linux设置su和sudo为不需要密码
- paip.python错误解决13
- 光纤传感技术:基于Matlab的OFDR系统数值仿真
- Acer 4750G 安装ubuntu18.04的过程记录
- matlab绘制彩色图像直方图
- 关于DXP2004的安装
- vue解决分页组件删除和添加内容-页码出现错误
- PR模板 有趣的波普艺术网络自媒体宣传PR视频模板
- 使用docker成功安装paddlespeech进行语音识别
- 网校系统开发如何做才能保证系统稳定发展
- Linux-------线程安全
- PLSQL 常用语句
- UE4 版本迭代、资源热更、pak更新方案
- python计算移动平均线_(转)简单移动平均线(Simple Moving Average,SMA) 定义及使用...
- 京东吞下一号店之后,网易成中国电商最大变量?