科研论文柱状图——Python matplotlib

本文对matplotlib库的使用进行简要介绍,并提供一些科研论文常用的绘图代码。

Matplotlib库

Matplotlib是一个强大的用于可视化的Python库,适用于各种科学计算、数据分析和工程应用领域。其使用步骤一般如下:

  • 导入 Matplotlib 库及其模块,如 import matplotlib.pyplot as plt。
  • 准备数据,通常是使用 NumPy 数组或 Pandas 数据框。
  • 创建图表对象,例如 plt.figure()。
  • 绘制图形,调用各种绘图函数(如 plt.plot()、plt.scatter()、plt.bar() 等)来创建所需类型的图形。
  • 添加标题、标签、图例等装饰图表。
  • 显示或保存图表,使用 plt.show() 或 plt.savefig()

柱状图绘图代码及示例

  1. 基本柱状图
    代码:
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 1, 8]

# 绘制柱状图
plt.bar(categories, values)

# 添加标题和标签
plt.title('Simple Bar Chart')
plt.xlabel('Category')
plt.ylabel('Value')

# 显示图表
plt.savefig("/home/dili/draw/graphs/csdn.png")

效果:
在这里插入图片描述

  1. 修改柱状图颜色
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 1, 8]
colors = ['#FFBE7A','#FA7F6F','#82B0D2','#BEB8DC']

# 绘制柱状图
plt.bar(categories, values, color=colors)

# 添加标题和标签
plt.title('Bar Chart with Colors')
plt.xlabel('Category')
plt.ylabel('Value')

# 在每个柱上添加数值标签
for i in range(len(values)):
    plt.text(i, values[i] + 0.1, str(values[i]), ha='center')

# 显示图表
plt.show()

在这里插入图片描述

  1. 分组柱状图
    代码:
import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [4, 7, 1, 8]
values2 = [5, 6, 2, 7]

# 设置位置和宽度
bar_width = 0.35
index = np.arange(len(categories))

# 绘制柱状图
plt.bar(index, values1, bar_width, label='Series 1',color="#FFD9B7",edgecolor='black')
plt.bar(index + bar_width, values2, bar_width, label='Series 2',color="#D6E7B5",edgecolor='black')

# 添加标题和标签
plt.title('Grouped Bar Chart')
plt.xlabel('Category')
plt.ylabel('Value')
plt.xticks(index + bar_width / 2, categories)
plt.legend()

# 显示图表
plt.show()

效果:
在这里插入图片描述
:如要增加每个组的柱状图个数,适当修改bar_width = 0.35的大小

  1. 分组柱状图2:每组多个,且图例在柱状图坐标轴外
    代码:
import numpy as np
import matplotlib.pyplot as plt
# 数据
groups = [1, 2, 3, 4, 5]
value1 = [0.7, 0.75, 0.78, 0.8, 0.85]
value2 = [0.78, 0.8, 0.7, 0.8, 0.84]
value3 = [0.9, 0.88, 0.89, 0.90, 0.92] 
value4 = [0.94, 0.94, 0.92, 0.95, 0.98]
# 绘图设置
bar_width = 0.15
index = np.arange(len(groups))
# 创建图形
plt.figure(figsize=(10, 6))
# 绘制柱状图
plt.bar(index, value1, bar_width, label='categories1', edgecolor='black', color="#FADCAA")
plt.bar(index + bar_width, value2, bar_width, label='categories2', edgecolor='black', color="#A6D0DD")
plt.bar(index + 2 * bar_width, value3, bar_width, label='categories3', edgecolor='black', color="#82A0D8")
plt.bar(index + 3 * bar_width, value4, bar_width, label='categories4', edgecolor='black', color="#CABBE9")
# 设置Y轴范围
plt.ylim(0.6, 1)
# 添加轴标签和图例
plt.xlabel('groups', fontsize=12)
plt.ylabel('values', fontsize=12)
plt.xticks(index + 2.5 * bar_width, groups, fontsize=12)
plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), ncol=4, fontsize=12)  # 设置图例位置
# 显示图表
plt.show()

效果:
在这里插入图片描述

  1. 堆叠柱状图
    代码:
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [4, 7, 1, 8]
values2 = [5, 6, 2, 7]

# 绘制堆叠柱状图
plt.bar(categories, values1, label='Series 1')
plt.bar(categories, values2, bottom=values1, label='Series 2')

# 添加标题和标签
plt.title('Stacked Bar Chart')
plt.xlabel('Category')
plt.ylabel('Value')
plt.legend()

# 显示图表
plt.show()

效果:
在这里插入图片描述

  1. 柱状图填充
    填充样式可分为以下几种,除了使用不同的填充样式以区分,还可以通过改变填充样式的数量改变填充密度:
  • /:斜线
  • \:反斜线
  • |:竖线
  • -:横线
  • +:加号
  • x:小叉
  • o:小圆圈
  • O:大圆圈
  • .:小点
  • *:星号
    代码:
import numpy as np
import matplotlib.pyplot as plt
# 数据
groups = [1, 2, 3, 4, 5]
value1 = [0.7, 0.75, 0.78, 0.8, 0.85]
value2 = [0.78, 0.8, 0.7, 0.8, 0.84]
value3 = [0.9, 0.88, 0.89, 0.90, 0.92] 
value4 = [0.94, 0.94, 0.92, 0.95, 0.98]
# 绘图设置
bar_width = 0.15
index = np.arange(len(groups))
# 创建图形
plt.figure(figsize=(10, 6))
# 绘制柱状图
plt.bar(index, value1, bar_width, label='categories1', edgecolor='black', color="#FADCAA", hatch="//")
plt.bar(index + bar_width, value2, bar_width, label='categories2', edgecolor='black', color="#A6D0DD",hatch="..")
plt.bar(index + 2 * bar_width, value3, bar_width, label='categories3', edgecolor='black', color="#82A0D8",hatch="--")
plt.bar(index + 3 * bar_width, value4, bar_width, label='categories4', edgecolor='black', color="#CABBE9",hatch="\\")
# 设置Y轴范围
plt.ylim(0.6, 1)
# 添加轴标签和图例
plt.xlabel('groups', fontsize=12)
plt.ylabel('values', fontsize=12)
plt.xticks(index + 2.5 * bar_width, groups, fontsize=12)
plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), ncol=4, fontsize=12)  # 设置图例位置
# 显示图表
plt.show()

效果:
在这里插入图片描述
7. 修改图中字体
英文期刊或会议论文中一般要求图中字体为Times New Roman,而matplotlib绘图时默认使用Arial字体,在Linux操作系统上修改绘图字体的步骤如下:

  • 下载字体相关文件,或者从本地计算机:C:\Windows\Fonts文件夹中复制
  • 将字体文件复制到linux系统中/usr/share/fonts文件夹下
  • 在绘图上添加以下代码后即可使用Times New Roman字体:
font_path = '/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf' 
font_props = plt.matplotlib.font_manager.FontProperties(fname=font_path)

注:需要在绘图时指定字体才会生效,如:plt.xticks(index + bar_width*2.5, categories, fontproperties=font_props, fontsize=12)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值