为了账号安全,请及时绑定邮箱和手机立即绑定

从文本文件中提取数据以在 matplotlib 中绘制图形时突出显示一点

从文本文件中提取数据以在 matplotlib 中绘制图形时突出显示一点

心有法竹 2022-05-24 13:12:58
从文本文件中提取数据时,我可以将图形制作成 XY 图形,但我只需要帮助突出显示函数上的一点。我有这个数据列表,其中第一列是 y 值,第二列是 x 值。从文本文件中绘制此数据时,我只想突出显示值 (0.718, 1.42676)。1.3822;0.21.43985;0.31.45821;0.41.45764;0.51.4469;0.61.43022;0.71.42676;0.7181.4101;0.81.38796;0.91.3647;1.0import matplotlib.pyplot as pltdata_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_listY = kinf_listplt.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()上面的代码完美无缺,唯一的问题是它没有突出显示函数上所需的点。
查看完整描述

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


查看完整回答
反对 回复 2022-05-24
?
慕慕森

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

//img1.sycdn.imooc.com//628c69790001550604290281.jpg

如果要突出显示多个,可以这样做:


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

//img1.sycdn.imooc.com//628c69840001c7db04240283.jpg

查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号