小编Enr*_*eri的帖子

转换unicode减号(来自matplotlib ticklabels)

我遇到了matplotlib用来表示ticklabels的Text对象的问题.

出于测试原因,我需要检查在绘图中创建的刻度标签的值.如果标签是字符串或正数,则没有问题:返回一个unicode字符串,我测试它(或根据情况将其转换为数字),一切都很好.

但是如果标签是负数,我得到的是一个错误的unicode字符串,这是我无法理解的原因.

我们来看看这个示例代码:

import pylab as plt
fig, ax = plt.subplots(1)
ax.plot([-1, 0, 1, 2], range(4))
labels = ax.get_xticklabels()
Run Code Online (Sandbox Code Playgroud)

现在,如果我问第二个标签的文本内容(0),我获得了一个正常的unicode字符串:

labels[1].get_text()
# u'0.0'
Run Code Online (Sandbox Code Playgroud)

但是第一个(the -1)的unicode 是一个奇怪的事情

labels[1].get_text()
# u'\u22121'
Run Code Online (Sandbox Code Playgroud)

这是在终端中正确打印的,但在这种情况下,我需要用数值来对付它,并且每次转换都会失败,无论是intfloat.

我尝试将其转换为UTF-8字符串

text = labels[1].get_text()
text.encode('utf8')
# '\xe2\x88\x921'
Run Code Online (Sandbox Code Playgroud)

但同样,它是正确打印的东西,并在转换时引发错误.我也查看了unicodedata模块,但看起来它只能转换单个字符,所以在这种情况下是没用的.我也尝试使用unicodedata.normalize和任何可能的格式规范化字符串,但再次没有成功.

我移动到pipy模块unidecode(如Python和字符规范化中所建议的那样),再次没有任何成功

from unidecode import unidecode
unidecode(text)
# '[?]1'
Run Code Online (Sandbox Code Playgroud)

我也试图在Matplotlib中使用非ASCII字符的解决方案来避免字体问题,但结果相同(我不确定它是否应该做些什么,这是一个可视化的问题......).问题Matplotlib中的Accented字符有一个类似的问题,因为它关注的是可视化而不是它本身的价值

我开始觉得有点迷失......我知道python 2.7有一些unicode"难度",但通常我可以用某种方式避免它们.

我知道问题是减号,因为我可以通过粗暴的替代罪魁祸首来避免这个问题:

text.replace(u'\u2212', '-')
# u'-1'
Run Code Online (Sandbox Code Playgroud)

但这比解决方案更多,更黑,而且我几乎可以肯定它在不同的系统中并不稳定,所以我希望更接近解决方案.

我正在和我一起工作 …

python string unicode matplotlib python-2.7

14
推荐指数
1
解决办法
4060
查看次数

保存多个图

我有这个代码从文件夹中的所有文本文件生成多个图.它运行得很好,并显示了情节,但我不知道如何保存所有.

import re
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
import os

rootdir='C:\documents\Neighbors for each search id'

for subdir,dirs,files in os.walk(rootdir):
 for file in files:
  f=open(os.path.join(subdir,file),'r')
  print file
  data=np.loadtxt(f)

  #plot data
  pl.plot(data[:,1], data[:,2], 'gs')

  #Put in the errors
  pl.errorbar(data[:,1], data[:,2], data[:,3], data[:,4], fmt='ro')

  #Dashed lines showing pmRa=0 and pmDec=0
  pl.axvline(0,linestyle='--', color='k')
  pl.axhline(0,linestyle='--', color='k')
  pl.show()

  f.close()
Run Code Online (Sandbox Code Playgroud)

我以前用过

fileName="C:\documents\FirstPlot.png"
plt.savefig(fileName, format="png")
Run Code Online (Sandbox Code Playgroud)

但我认为这只是将每个图表保存到一个文件中并覆盖最后一个.

python matplotlib

7
推荐指数
1
解决办法
2万
查看次数

避免整个化石的承诺

我在化石库中添加了一个文件目录,但是:

  1. 包含的文件占用的空间比我预期的多
  2. 后来我意识到添加它是完全超级的.

所以现在我发现自己的存储库比包含从未有用的文件需要的存储库大一个数量级.整个目录已包含在单个提交中,在该提交中没有其他任何操作,并且从未修改过,但之后我不得不做其他提交(在对化石更有信心之后,我知道我可以使用撤消在做任何其他事情之前,但当时我没有意识到可能性).

我发现完成这项工作的唯一方法是对数据执行避免删除它们,但我也在网上发现此操作可能会对数据库造成严重破坏.鉴于这是一个与工作相关的存储库,我担心造成损害.

有没有办法摆脱那些安全且不会使数据库处于损坏/充满警告状态的文件?

version-control fossil

3
推荐指数
1
解决办法
319
查看次数