2016-03-22 4 views
0

私は軸のためのカスタムスケールを作る必要があります。 に入る前に、私の特別な場合にはより簡単な方法があるのだろうかと思います。 The plot I need to improveシンプルリストまたはdictのカスタムスケール?

は、ファイル名の横の各列の値を参照してください:

絵はそうここに私達は行く、千個の言葉の価値がありますか?行の高さは、行の高さを前の行の高さとの相対的な値にしたいと思います。私は0から始まり、上限を定義しなければならないので、最後の行が表示されます。

+4

のコード例では、価値があります何千もの写真;) – egpbos

+0

共有するコードはあまりありません。 dに値を設定し、[seaborn.heatmap](http://stanford.edu/~mwaskom/software/seaborn-dev/generated/seaborn.heatmap.html)を使用してプロットします。 'ax = sns.heatmap(hm、xticklabels = round(hm.shape [1]/10)、cmap = sns.plt.cm.Reds)'のような行の名前とタイトルを追加します。 – nicoco

答えて

1

は、あなたが不規則な形状のグリッドを作成することが可能なmatplotlib's pcolormeshを試してみてください。

from matplotlib import pyplot as plt 
import numpy as np 

y1D = np.hstack([0, np.random.random(9)]) 
y1D = np.sort(y1D)/np.max(y1D) 

x, y = np.meshgrid(np.arange(0,1.1,0.1),y1D) 

plt.pcolormesh(x,y, np.random.random((10,10))) 
plt.show() 

pcolormesh example

+0

これは私が必要なもののように見える、ありがとう。今、私はこれがどのように動作するかを理解する必要があります:) – nicoco

+0

あなたは、各色付きブロックのコーナーの座標であるpcolormesh xとy座標を与えます。次に、最後の配列でブロックを色付けします。 'y1D'と' x'と 'y'はあなたのデータに基づいて定義する必要があります(もちろん、ランダムデータを与えたpcolormeshの第3引数)。 – egpbos

0

あなたはこのレシピを使用すると、あなたのニーズに適応することができます

import numpy as np 
import matplotlib.pyplot as plt 

grid = np.zeros((20,20)) 
for i in range(grid.shape[0]): 
    r = np.random.randint(1,19) 
    grid[i,:r] = np.random.randint(10,30,size=(r,)) 

plt.imshow(grid,origin='lower',cmap='Reds',interpolation='nearest') 
plt.yticks(list(range(20)),['File '+str(i) for i in range(20)]) 
plt.colorbar() 
plt.show() 

を、結果はこれです:

enter image description here

+0

これは面白いです、私はこのプロットに 'seaborn.heatmap'の代わりに' imshow'を使うことを検討していましたが、ここで行の高さを変更する簡単な方法はありますか? – nicoco

+0

pcolormeshがあります。各グリッドセルの角のxとyの配列と、色の値を定義するzの配列を与えます。 – egpbos

+0

推奨されるようにpcolormeshを使用することも、縦横比とグリッドノードだけを使用して調整することもできます。 Matplotlibは非常に柔軟です。私が間違っていなければ、Imshowはピクセルの大きさも許します。私の心の中にapiが存在することはありません。 – armatita