【问题标题】:draw plot with lots of text outside of it (matplotlib)绘制带有大量文本的绘图(matplotlib)
【发布时间】:2013-11-11 04:46:16
【问题描述】:

我有 2 个点(大小为 8 的向量)和 3 个不同的按位运算(And、Or、Xor)我将每个点和按位运算的结果映射到 2D 图上。现在我想显示每个点的真实数据本身以及绘图旁边的操作结果(绘图右侧或绘图上方(尽可能或更好))所以稍后当我想分析结果时,我可以轻松读取数据值.现在我的形象是这样的,你可以看到传说被切断了,我在情节之外没有地方写任何东西:

我想在情节之外显示的文字:

P1  P2  And Or  Xor     
0   1   0   1   1   
0   0   0   0   0   
0   0   0   0   0   
0   0   0   0   0   
1   1   1   1   0   
1   1   1   1   0   
1   1   1   1   0   
1   1   1   1   0   

我正在使用的代码:

import numpy as np
import pylab as pl
fig = pl.figure()
ax = fig.add_subplot(111)

ax.plot(p1x, p1y, 'bx', label='Point 1', alpha=.55, markersize=30)
ax.plot(p2x, p2y, 'r+', label='Point 2', alpha=.55, markersize=30)
ax.plot(Andx, Andy, 'go', label='AND', alpha=.45, markersize=10) 
ax.plot(Orx, Ory, 'y<', label='OR', alpha=.45, markersize=10) 
ax.plot(Xorx, Xory, 'ks',  label='XOR', alpha=.45, markersize=10) 
ax.set_title('Bitwise Operation')
ax.set_xlabel('axis X')
ax.set_ylabel('axis Y')
ax.axis([-0.05, 1.05, -0.05, 1.05])
pl.legend(loc='lower left', bbox_to_anchor=(1.02, 0), borderaxespad=0)
pl.show()

【问题讨论】:

    标签: text matplotlib


    【解决方案1】:

    您可以使用add_axes 直接控制轴的大小和位置,然后使用text 添加您想要的文本。例如:

    import numpy as np
    import pylab as pl
    fig = pl.figure()
    
    ax =  fig.add_axes([0.1, 0.2, 0.4, 0.4])
    
    ax.plot(.1, .2, 'bx', label='Point 1', alpha=.55, markersize=30)
    ax.plot(.2, .1, 'r+', label='Point 2', alpha=.55, markersize=30)
    ax.plot(.3, .2, 'go', label='AND', alpha=.45, markersize=10) 
    ax.plot(.1, .3, 'y<', label='OR', alpha=.45, markersize=10) 
    ax.plot(.1, .2, 'ks',  label='XOR', alpha=.45, markersize=10) 
    ax.set_title('Bitwise Operation')
    ax.set_xlabel('axis X')
    ax.set_ylabel('axis Y')
    ax.axis([-0.05, 1.05, -0.05, 1.05])
    pl.legend(loc='lower left', bbox_to_anchor=(1.02, 0), borderaxespad=0)
    
    data = ('P1  P2  And Or  Xor \n'
    '0   1   0   1   1   \n'
    '0   0   0   0   0   \n'
    '0   0   0   0   0   \n'
    '0   0   0   0   0   \n'
    '1   1   1   1   0   \n'
    '1   1   1   1   0   \n'
    '1   1   1   1   0   \n'
    '1   1   1   1   0   \n')
    
    pl.text(1.75,0,data)
    pl.show()
    

    【讨论】:

    【解决方案2】:

    就我而言,我必须在文本框中显示某些额外的数据(图表的参数),类似于Matlab 中的“文本外部区域”。经过一些试验和错误,我偶然发现了这个写得很好的答案here

    答案的后处理部分真的很有帮助。 plt.subplots_adjust 给程序员比plt.tight_layout 更好的控制

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多