Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Networkx和matplotlib中从右到左的支持_Python_Graph_Matplotlib_Arabic_Networkx - Fatal编程技术网

Python Networkx和matplotlib中从右到左的支持

Python Networkx和matplotlib中从右到左的支持,python,graph,matplotlib,arabic,networkx,Python,Graph,Matplotlib,Arabic,Networkx,我曾尝试使用运行在LinuxFedora19KDE、64位上的Python33NetworkX和matplotlib绘制字典图。当输入英文脚本作为输入数据时,图形绘制得很好。然而,当提供阿拉伯语脚本作为输入数据时,我得到的只是并列排列的正方形。这是一个简单的英文脚本图形示例: 这是一个简单的阿拉伯文字图表,用阿拉伯语书写,从右到左书写 问题是:如何在使用python networkx和matplotlib.pyplot生成的图形中显示阿拉伯语脚本?我真的很感激你的帮助 编辑:在Chronial建

我曾尝试使用运行在LinuxFedora19KDE、64位上的Python33NetworkX和matplotlib绘制字典图。当输入英文脚本作为输入数据时,图形绘制得很好。然而,当提供阿拉伯语脚本作为输入数据时,我得到的只是并列排列的正方形。这是一个简单的英文脚本图形示例:

这是一个简单的阿拉伯文字图表,用阿拉伯语书写,从右到左书写

问题是:如何在使用python networkx和matplotlib.pyplot生成的图形中显示阿拉伯语脚本?我真的很感激你的帮助

编辑:在Chronial建议选择正确的字体后,我在python33 shell中执行了以下命令:

>>> import matplotlib.pyplot
>>> matplotlib.rcParams.update({font.family' : 'TraditionalArabic'})
然后我用阿拉伯单词构建了这个图表。然而,绘制的图表并没有显示阿拉伯文字。它显示了jsut正方形。我不知道matplotlib.pyplot是使用系统字体还是有自己的字体包。假设matplotlib.pyplot使用系统字体,那么它应该显示阿拉伯语脚本。似乎需要在matplotlib.pyplot中安装阿拉伯语字体。但我不知道怎么做。非常感谢你的帮助

编辑3: 在系统中安装阿拉伯语字体后,我可以用阿拉伯语脚本生成图形,但脚本从左到右显示。向最后阶段迈进的一个良好进展是:阿拉伯文从右向左出现。下面是图表的一个快照:

你的

Mohammed

对于matplotlib中的阿拉伯语,您需要bidi.algorithm.get\u显示和模块:


你确定你选择了包含这些字符的字体吗?@Chronial:不,我没有选择包含阿拉伯文的字体,只是因为我不知道怎么做。你能告诉我怎么做吗。如果你知道任何关于选择字体和设置图形格式的教程,请向我推荐。我真的很感激你的帮助!您应该可以在这里找到所有需要的信息:@Chronial,谢谢您的帮助。您能告诉我如何将家族字体“traditional arabic”安装到python matplotlib.pyplot中吗?感谢你的帮助!你可以试着在字符串的开头加上。您可以使用u\u202C在python中生成它。谢谢您,Nasser,谢谢您的帮助。不幸的是,我无法在Linux上安装arabic_Reformer。它抛出安装错误。此外,Python bidi只支持Python 2.7,而Python 2.7没有本机UTF-8支持。下面是下载/解包下载master.zip运行setup.py path:/tmp/pip umSNFY build/setup.py egg_information for package from Traceback最近一次调用:文件,第17行,在IOError:[Errno 2]没有这样的文件或目录:“/tmp/pip umSNFY build/setup.py”命令的完整输出python setup.py egg_info:Traceback最近的调用last:file,第17行,阿拉伯语_reformer是一个简单的python模块,不需要运行setup.py,因为它没有任何模块。只需将arabic_reformer.py复制并粘贴到python的PythonXXX\Lib\site packages\中,就可以了。/usr/local/anaconda3/Lib/python3.5/site packages/matplotlib/font_manager.py:1288:UserWarning:findfont:font-family['Times New Roman']未找到。回到Bitstream Vera Sans prop.get_family,self.defaultFamily[fontext]我不知道如何在终端中安装字体
from bidi.algorithm import get_display
import matplotlib.pyplot as plt
import arabic_reshaper
import networkx as nx

# Arabic text preprocessing 
reshaped_text = arabic_reshaper.reshape(u'لغةٌ عربيّة')
artext = get_display(reshaped_text)

# constructing the sample graph
G=nx.Graph()
G.add_edge('a', artext ,weight=0.6)
pos=nx.spring_layout(G) 
nx.draw_networkx_nodes(G,pos,node_size=700)
nx.draw_networkx_edges(G,pos,edgelist=G.edges(data=True),width=6)

# Drawing Arabic text
# Just Make sure your version of the font 'Times New Roman' has Arabic in it. 
# You can use any Arabic font here.
nx.draw_networkx_labels(G,pos,font_size=20,font_family='Times New Roman')

# showing the graph
plt.axis('off')
plt.show()