如何使用python//Matplotlib重新创建此图形?

2024-09-29 23:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想重现这样的情景:

但是用我自己的数据。我的数据如下:

 Number    Name1        Structure        mean    stdev
 1         Aldehydes    RCH=O       122.76    7.67
 2         Ketones          R2C=O       8.11      0.15
 2         Amides       R-CONr2     20.1      83.24

我怎样才能重现这个情节?我已经做到了:

^{pr2}$

但我不能让这个情节像我的例子。有人能为此发布一个示例代码吗?在


Tags: 数据numbermeanstructure情节name1情景r2c
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:33

可以首先将数据绘制为误差线,然后用相应的文本对其进行注释。在

下面是一个简单的代码:

import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('data.txt', unpack=True,names=True,dtype=None)

fig, ax = plt.subplots()
ax.set_yticklabels([])
ax.set_xlabel(r'ppm ($\delta$)')
pos = np.arange(len(data))
#invert y axis so 1 is at the top
ax.set_ylim(pos[-1]+1, pos[0]-1)
ax.errorbar(data['mean'], pos, xerr=data['stdev'], fmt=None)

for i,(name,struct) in enumerate(zip(data['Name1'], data['Structure'])):
    ax.text(data['mean'][i], i-0.06, "%s, %s" %(name, struct), color='k', ha='center')

plt.show()

image

更改注释中单个字母的颜色将非常棘手,因为matplotlib不支持多色文本。我试图通过使用正则表达式对同一文本进行两次注释(一个只有红色的“C”,另一个没有“C”)来找到一种解决方法,但是因为每个字母不占用相同的空间,所以它对所有的单词都不适用(见下文)。在

^{pr2}$

img2

相关问题 更多 >

    热门问题