2 回答
TA贡献1802条经验 获得超10个赞
看起来您使用了这个答案中的方法:using Matplotlib how to highlight one point in the final plot。在这种情况下,您可以以类似的方式分解事物:
plt.plot(X,Y)
plt.xlabel('Density (g/cc)')
plt.ylabel('K-INF')
plt.title('Multiplication factor as a function of Density')
plt.plot(X[0:6], Y[0:6], 'ro')
plt.plot(X[6], Y[6], 'g*')
plt.plot(X[7:], Y[7:], 'ro')
plt.grid()
plt.savefig('kinfVdenB2.png')
TA贡献1856条经验 获得超17个赞
它没有突出正确的点,因为您在以下位置给出了错误的位置:
plt.plot(X[1:], Y[1:], 'ro')
plt.plot(X[0], Y[0], 'g*')
一个更万无一失的方法是这样做:
import matplotlib.pyplot as plt
import numpy as np
data_file = open('new3b.txt','r')
lines = data_file.readlines()
data_file.close()
kinf_list = []
den_list = []
for i in range(len(lines)):
lines[i] = lines[i].strip('\n')
line_list = lines[i].split(';')
kinf_list.append(float(line_list[0]))
den_list.append(float(line_list[1]))
X = np.array(den_list)
Y = np.array(kinf_list)
plt.plot(X,Y)
plt.xlabel('Density (g/cc)')
plt.ylabel('K-INF')
plt.title('Multiplication factor as a function of Density')
HighlitghtX,HighlitghtY = 0.718, 1.42676
NotX = X[np.where(X != HighlitghtX)]
NotY = Y[np.where(Y != HighlitghtY)]
YesX = X[np.where(X == HighlitghtX)]
YesY = Y[np.where(Y == HighlitghtY)]
plt.scatter(NotX, NotY, color='r',marker='o',s=50)
plt.scatter(YesX, YesY, color='g',marker='*',s=50)
plt.grid()
plt.savefig('kinfVdenB2.png')
plt.show()

如果要突出显示多个,可以这样做:
plt.plot(X,Y)
plt.xlabel('Density (g/cc)')
plt.ylabel('K-INF')
plt.title('Multiplication factor as a function of Density')
HighlitghtX,HighlitghtY = np.array([0.718,0.8]), np.array([1.42676,1.4101])
NotX = X[np.isin(X,HighlitghtX)]
NotY = Y[np.isin(Y,HighlitghtY)]
YesX = X[np.invert(np.isin(X,HighlitghtX))]
YesY = Y[np.invert(np.isin(Y,HighlitghtY))]
print(NotX,YesX)
plt.scatter(NotX, NotY, color='r',marker='o',s=50)
plt.scatter(YesX, YesY, color='g',marker='*',s=50)
plt.grid()
plt.savefig('kinfVdenB2.png')
plt.show()

添加回答
举报
