花了4个小时就为装这个玩样,终于解决了,真的又气又兴奋(笑死)。
不知道是版本问题还是什么,我在自己电脑上使用pip install SciencePlots安装,只能安装1.0.1版本,但是这个版本根本没有效果,用不了。然后我又使用手动安装si在了一个细节上,坑太多了。
我的开发环境:
Anaconda python3.6
(其实SciencePlots是matplotlib样式包,是给定了几个学术作图的样式)
SciencePlots · PyPIFormat Matplotlib for scientific plottinghttps://pypi.org/project/SciencePlots/1.0.9/#description
# 使用pip安装
pip install SciencePlots
# from GitHub
pip install git+https://github.com/garrettj403/SciencePlots
# 使用git克隆
git clone https://github.com/garrettj403/SciencePlots.git
cd SciencePlots
pip install -e . #注意这个点.
找到Matplotlib样式目录,一般在C:\Users\用户\.matplotlib
新建一个stylelib文件夹
如果你不知道在哪里,可以在python的控制台中输入
import matplotlib
print(matplotlib.get_configdir())
找到刚刚解压的SciencePlots内的style内的所有.mplstyle文件全部复制到步骤二的stylelib文件夹中(重点:不要把整个style文件下的都复制过去,把下面color、journals、misc内.mplstyle文件的单独复制过去。)我就si在这了,导致没效果,还一直在找原因
最后目录如下:
代码来源
import numpy as np
import matplotlib.pyplot as plt
def model(x, p):
return x ** (2 * p + 2) / (2 + x ** (2 * p))
x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science', 'no-latex']):
fig, ax = plt.subplots()
for p in [10, 15, 20, 30, 50, 100]:
ax.plot(x, model(x, p), label=p)
ax.legend(title='Order')
ax.set(xlabel='Voltage (mV)')
ax.set(ylabel='Current (μA)')
ax.autoscale(tight=True)
fig.savefig('fig1.png', dpi=300)
with plt.style.context(['science', 'ieee', 'no-latex']):
fig, ax = plt.subplots()
for p in [10, 20, 50]:
ax.plot(x, model(x, p), label=p)
ax.legend(title='Order')
ax.set(xlabel='Voltage (mV)')
ax.set(ylabel='Current (μA)')
ax.autoscale(tight=True)
fig.savefig('fig2.png', dpi=300)
with plt.style.context(['science','ieee', 'grid', 'no-latex']):
fig, ax = plt.subplots()
for p in [10, 20, 50]:
ax.plot(x, model(x, p), label=p)
ax.legend(title='Order')
ax.set(xlabel='Voltage (mV)')
ax.set(ylabel='Current (μA)')
ax.autoscale(tight=True)
fig.savefig('fig3.png', dpi=300)