介绍
本文主要记录笔者在使用Python制作条形图中的一些脚本。
代码
# 导入数据
import pandas as pd
df = pd.read_excel(\'demo.xlsx\', header=0, sheet_name=\'Sheet1\')
df.head()
# 导入相关包
import matplotlib.pyplot as plt
import seaborn as sns
from pylab import mpl
mpl.rcParams[\'font.size\'] = 12
mpl.rcParams[\'axes.unicode_minus\']=False
mpl.rcParams[\'font.family\'] = [\'calibri\']
ax = sns.barplot(
x="Group",
y="Value",
hue="Category",
data=df,
orient="v"
)
ax.axhline(0, color="k", lw=1, clip_on=False)
ax.spines[\'top\'].set_visible(False)
ax.spines[\'right\'].set_visible(False)
ax.spines[\'bottom\'].set_visible(False)
# ax.spines[\'left\'].set_visible(False)
ax.tick_params(axis=u\'x\', which=u\'both\',length=0)
ax.set_xlabel("")
ax.set_ylabel("Value")
ax.set_ylim(0, 0.35)
plt.legend(bbox_to_anchor=(1.05, 0), loc=3, borderaxespad=0)
plt.savefig(\'20200713_demo.pdf\', bbox_inches=\'tight\')
说明
from pylab import mpl
mpl.rcParams[\'font.size\'] = 12
mpl.rcParams[\'axes.unicode_minus\']=False
mpl.rcParams[\'font.family\'] = [\'calibri\']
设置图形的字体、字号以及解决在特定字体下负号的显示问题。
ax = sns.barplot(
x="Group",
y="Value",
hue="Category",
data=df,
orient="v"
)
条形图主体代码,这里只用到了几个基本的参数。关于barplot()函数的其他参数参考seaborn1和Matplotlib2官方文档。
ax.axhline(0, color="k", lw=1, clip_on=False)
添加直线y=0。对于y轴数据正负数同时存在的情况,在y=0的地方添加水平线可以让图形显得不那么突兀。
ax.spines[\'top\'].set_visible(False)
ax.spines[\'right\'].set_visible(False)
ax.spines[\'bottom\'].set_visible(False)
# ax.spines[\'left\'].set_visible(False)
删除图形四周的边框。
ax.tick_params(axis=u\'x\', which=u\'both\',length=0)
去掉x轴的标尺,也就是原来x轴上的小竖线。
ax.set_xlabel("")
ax.set_ylabel("Value")
设置x轴和y轴的标签。如果这里不进行设置,将会默认显示barplot的x和y参数对应的变量名称。因此,如果不想显示原始的变量名称,就可以在这里进行设置。
ax.set_ylim(0, 0.35)
设置y轴的数值范围。
plt.legend(bbox_to_anchor=(1.05, 0), loc=3, borderaxespad=0)
设置图例的位置。如果这里不进行设置,barplot函数默认会在图形内部显示图例。在数据比较多的情况下,图例和柱子就会有重叠。因此将图例放置在图形外部是比较好的一种方法。
plt.savefig(\'20200713_demo.pdf\', bbox_inches=\'tight\')
将图形保存到文本当中。
参考
- [1] seaborn官方文档
- [2] Matplotlib官方文档