加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:33:18 所属栏目: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 我该如何重新创建这个情节呢?我得到了: from pylab import *impo
我想重新创建这样的东西:

但使用我自己的数据.我的数据如下:

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

我该如何重新创建这个情节呢?我得到了:

from pylab import *
import numpy  
data = numpy.genfromtxt('data',unpack=True,names=True,dtype=None) 
pos = arange(size(data['Number']))
ax2.errorbar(pos,data['mean'],yerr=data['stdev'])

但我无法让这个情节与我的榜样相似.有人可以为此发布示例代码吗?

解决方法

您可以首先将数据绘制为误差条,然后使用相应的文本对其进行注释.

下面是一个简单的代码供您开始:

import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('data.txt',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()

更改注释中单个字母的颜色将非常棘手,因为matplotlib不支持多色文本.我试图找到一个解决方法,使用正则表达式来注释两次相同的文本(一个只有红色的“C”和没有“C”的一个),但因为每个字母不占用相同的空间,它不会所有单词的工作都很好(见下文).

#add to the import
import re

#and change
for i,data['Structure'])):
    text_b = ax.text(data['mean'][i],i-0.05,ha='center')
    text_b.set_text(text_b.get_text().replace('C','   '))
    text_r = ax.text(data['mean'][i],"%s %s" %(name,color='r',ha='center')
    text_r.set_text(re.sub('[abd-zABD-Z]','  ',text_r.get_text()))
    text_r.set_text(re.sub('[0-9=-W]',' ',text_r.get_text()))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读