从文本文件中提取数据以在 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 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()

上面的代码完美无缺,唯一的问题是它没有突出显示函数上所需的点。


心有法竹
浏览 232回答 2
2回答

守候你守候我

看起来您使用了这个答案中的方法: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')

慕慕森

它没有突出正确的点,因为您在以下位置给出了错误的位置:plt.plot(X[1:], Y[1:], 'ro')plt.plot(X[0], Y[0], 'g*')一个更万无一失的方法是这样做:import matplotlib.pyplot as pltimport numpy as npdata_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.42676NotX = 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python