1
我试图在paper中得到数字5,但我无法生成两个阴影区域,指示1 kcal/mol和2 kcal/mol的误差。每个阴影区域必须与纸张颜色不同。我怎样才能做到这一点?如何使用matplotlib生成阴影区域
我的代码:
#!/usr/bin/python
import numpy as np
import pylab as plot
import matplotlib.pyplot as plt
import numpy, scipy, pylab, random
from matplotlib.ticker import MultipleLocator
import matplotlib as mpl
from matplotlib.ticker import MaxNLocator
color = "#252525"
gray = "#777777"
with open("input.txt", "r") as f:
x=[]
y=[]
z=[]
for line in f:
if not line.strip() or line.startswith('@') or line.startswith('#'): continue
row = line.split()
x.append(float(row[0]))
y.append(float(row[1]))
z.append(float(row[2]))
fig = plt.figure(figsize=(3.2,2.2), dpi=300)
ax = plt.subplot(111)
plt.xlim(-2, -12)
plt.ylim(-2, -12)
ax.xaxis.set_major_locator(MaxNLocator(6))
ax.yaxis.set_major_locator(MaxNLocator(6))
ax.xaxis.set_minor_locator(MultipleLocator(1))
ax.yaxis.set_minor_locator(MultipleLocator(1))
plt.plot(x,y,'o',color="black", ms=3, mec="black")
plt.plot(x,z, color='gray' , linestyle = "dashed", dashes=(2,2))
plt.xlabel('Experimental (kcal/mol)', fontsize=8)
plt.ylabel('Predicted (kcal/mol)', fontsize=8)
for axis in ['top','bottom','left','right']:
ax.spines[axis].set_linewidth(0.5)
plt.subplots_adjust(top=0.95)
plt.subplots_adjust(bottom=0.18)
plt.subplots_adjust(left=0.14)
plt.subplots_adjust(right=0.95)
plt.tick_params(axis='both', which='major', labelsize=7)
plt.tick_params(axis='both', which='minor', labelsize=0)
plt.savefig("output.png", dpi=300)
输入文件:
-2 -2.0 -2
-3 -3.5 -3
-4 -5.0 -4
-5 -7.0 -5
-6 -6.0 -6
-8 -10.1 -8
-10 -10.0 -10
-12 -12.0 -12
获得输出: