Python 将文本文件中的数据提取到matplotlib中的图形时,高亮显示一个点

Python 将文本文件中的数据提取到matplotlib中的图形时,高亮显示一个点,python,matplotlib,Python,Matplotlib,当从文本文件中提取数据时,我能够使图形成为XY图形,但我只需要帮助突出显示函数上的一个点 我有一个数据列表,第一列是y值,第二列是x值。从文本文件打印此数据时,我只想突出显示值(0.718,1.42676) 1.3822;0.2 1.43985;0.3 1.45821;0.4 1.45764;0.5 1.4469;0.6 1.43022;0.7 1.42676;0.718 1.4101;0.8 1.38796;0.9 1.3647;1.0 import matplotlib.pyplot as

当从文本文件中提取数据时,我能够使图形成为XY图形,但我只需要帮助突出显示函数上的一个点

我有一个数据列表,第一列是y值,第二列是x值。从文本文件打印此数据时,我只想突出显示值(0.718,1.42676)

1.3822;0.2
1.43985;0.3
1.45821;0.4
1.45764;0.5
1.4469;0.6
1.43022;0.7
1.42676;0.718
1.4101;0.8
1.38796;0.9
1.3647;1.0

import matplotlib.pyplot as plt

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 = den_list
Y = kinf_list

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[1:], Y[1:], 'ro')
plt.plot(X[0], Y[0], 'g*')
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')
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')

希望这有帮助。

看起来您使用了以下答案中的方法:。在这种情况下,您可以用类似的方式分解事物:

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')

希望这能有所帮助。

它没有突出显示正确的点,因为您在以下方面给了它错误的位置:

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()

它没有突出显示正确的点,因为您在以下位置给了它错误的位置:

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()

另一个答案更具普遍性,因为它不依赖于数据点的顺序。另一个答案更具普遍性,因为它不依赖于数据点的顺序。