学术论文黑白柱状图绘制

  • 一. 前言
  • 二. 柱形图绘制
    • 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】学术论文黑白柱状图绘制相关推荐

  1. matplotlib折线图与柱状图绘制在一起

    import seaborn as sns import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # ...

  2. python可视化(案例)高颜值图的复现(学术论文、商业周刊)

    前文的两个案例虽用的都是虚拟数据集,但都有一定的针对性,案例 水果分类(香蕉.苹果大战) 中,讨论了一个分类问题,并对散点图.直方图.箱线图和等比例子图的应用做了探讨:案例 多元线性回归 中,讨论了一 ...

  3. 怎么用python找论文_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  4. 中文论文黑白矢量图绘制

    中文论文黑白矢量图绘制 场景:python matplotlib生成的图片的保存格式不包含出版社所要求的(.emf和.wmf格式),如何将生成的图片转化为该格式? 将文件保存为.svg格式 使用Cor ...

  5. python的论文图表_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  6. 学术论文模式图、统计图绘制

    开课背景 我们经常在文献中看到非常漂亮的插图,相信你也曾和我一样想过:这样的插图是怎样制作出来的呢?我能不能也制作出这样的插图呢?其实,插图制作这项技能并非"高深莫测",它在国外已 ...

  7. [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  8. 【数据分析】近10年学术论文的数据分析!

    作者:李攀,北航硕士,Datawhale优秀学习者 arXiv是重要的学术公开网站,也是搜索.浏览和下载学术论文的重要工具.它涵盖的范围非常广,涉及物理学的庞大分支和计算机科学的众多子学科,如数学.统 ...

  9. 参考文献的序号怎么对齐_学术论文发表写作格式、具体要求和参考文献的要求模板...

    下面是杂志社这边的期刊论文整篇论文的具体格式要求.格式模板.看到最后有惊喜哟!一.论文篇幅: 通常3000-8000字,论文必须包含200字左右的中.英文摘要及3-4个关键词.二.论文格式: (一)题 ...

最新文章

  1. python打开excel表格-如何从python中用excel打开excel工作表?
  2. Java script第二课
  3. AS 自定义 Gradle plugin 插件 案例 MD
  4. vue3 创建路由「vue-router 4.x 的使用」
  5. POJ3287(BFS水题)
  6. linux SU不用密码,linux设置su和sudo为不需要密码
  7. paip.python错误解决13
  8. 光纤传感技术:基于Matlab的OFDR系统数值仿真
  9. Acer 4750G 安装ubuntu18.04的过程记录
  10. matlab绘制彩色图像直方图
  11. 关于DXP2004的安装
  12. vue解决分页组件删除和添加内容-页码出现错误
  13. PR模板 有趣的波普艺术网络自媒体宣传PR视频模板
  14. 使用docker成功安装paddlespeech进行语音识别
  15. 网校系统开发如何做才能保证系统稳定发展
  16. Linux-------线程安全
  17. PLSQL 常用语句
  18. UE4 版本迭代、资源热更、pak更新方案
  19. python计算移动平均线_(转)简单移动平均线(Simple Moving Average,SMA) 定义及使用...
  20. 京东吞下一号店之后,网易成中国电商最大变量?

热门文章

  1. 分享一个简单好用的快递查询、物流管理软件
  2. 做自媒体怎样开始起步?
  3. 使用线程安全型双向链表实现简单 LRU Cache 模拟
  4. 企查猫app破解以及数据解密
  5. 新彩虹世界密码系统是多少_希望最近的世界密码日是我们需要的最后一个
  6. Word文档中如何打外国人姓名间隔的那一个小点
  7. MOT 指标汇总 (详讲 说明 含义 )
  8. 英语学习中总结的阅读、段落匹配、选词填空技巧
  9. cad2010背景怎么调成黑色_iOS14桌面怎么布局好看-热点资讯-
  10. ArcGIS 网络分析[2.3] 最近设施点