2016-04-28 126 views
0

我有一个二维(numpy)数组,我用命令plt.plot(wp [:,0])绘制第一列。这显示了我想要的内容,除了x轴标签之外,我不想改变任何内容。对于x轴,我正在搜索一个命令,该命令显示第二列值相同的区域,并显示该区域的y编号。用matplotlib x轴标记

[x1,y1] 
[x2,y2] 
[x3,y2] 
[x4,y3] 
[x5,y3] 
[x6,y3] 
[x7,y4] 

正如你可以在我的示例矩阵中看到的,第二列中的条目不是唯一的,而是具有相同值的“区域”。

编辑:所以plt.xticks(TX,可湿性粉剂[:,2],旋转= '垂直')的较小尺寸的矩阵工作,但看起来非常难看为较大的:small matrices

Large matrices

所以在我看来,如果每个数字只出现一次就足够了。你知道怎么做吗?

+0

您可以使用'plt.xticks(wp [:,0],labels)自定义刻度标签''http://matplotlib.org/examples/ticks_an d_spines/ticklabels_demo_rotation.html – user3148185

+0

这实际上适用于小型矩阵,但对于较大的矩阵看起来非常糟糕 – HighwayJohn

回答

1

你必须:

  • 定制时一定值

examples修改打印什么蜱数量:

import matplotlib.pyplot as plt 
from matplotlib.ticker import FuncFormatter, MaxNLocator 
fig = plt.figure() 
ax = fig.add_subplot(111) 
xs = range(100) 
ys = range(100) 


def format_fn(tick_val, tick_pos): 
    return '{0}'.format(int(tick_val))[:1] 

ax.xaxis.set_major_formatter(FuncFormatter(format_fn)) 
ax.xaxis.set_major_locator(MaxNLocator(nbins=6,integer=True)) 
ax.plot(xs, ys) 
plt.show() 
+0

结果看起来并不乐观。我想这只适用于,如果具有相同价值的地区是相同的大小? – HighwayJohn

+0

如果你看一下这个例子,你会发现即使你绘制了很多点(26),你也只是在选择其中的一些点(a,d,g ......)。对于你的情况,你必须在 –

+0

之前计算垃圾桶(或“班级”)的数量。但是我的数值没有相同的区间长度,并且看到区间大小非常重要。这将是完美的,如果只是第一个变化的x-tick会显示...(例如0.1 ... 2 .... 3 ..... 4 ... 5.6) – HighwayJohn