5

このような非常に単純な基本的なバーのグラフィックがあります 代替テキスト

しかし、このようにバーを3D効果で表示したい 代替テキスト

バーにその 3D 効果を持たせたいだけです...私のコードは次のとおりです。

fig = Figure(figsize=(4.6,4))
ax1 = fig.add_subplot(111,ylabel="Valeur",xlabel="Code",autoscale_on=True)

width = 0.35
ind = np.arange(len(values))
rects = ax1.bar(ind, values, width, color='#A1B214')
ax1.set_xticks(ind+width)
ax1.set_xticklabels( codes )
ax1.set_ybound(-1,values[0] * 1.1)
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)

私は matplotlib のギャラリーを探していましたが、いくつか試してみましたが、運が悪かったです。ありがとう

4

2 に答える 2

11

3D 棒グラフが必要な理由は確かに理解しています。それが彼らが作成された理由だと思います。

3D プロットを作成するために必要な Matplotlib のライブラリ (「ツールキット」) は、サードパーティのライブラリなどではなくベースの Matplotlib インストールに含まれています。(これは現在の安定版 1.0 に当てはまりますが、0.98 ではなかったと思います。そのため、「アドオン」から基本インストールの一部への変更は、過去 1 年以内に発生しました。私は信じている)

だからここにいる:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as PLT
import numpy as NP

fig = PLT.figure()
ax1 = fig.add_subplot(111, projection='3d')

xpos = NP.random.randint(1, 10, 10)
ypos = NP.random.randint(1, 10, 10)
num_elements = 10
zpos = NP.zeros(num_elements)
dx = NP.ones(10)
dy = NP.ones(10)
dz = NP.random.randint(1, 5, 10)

ax1.bar3d(xpos, ypos, zpos, dx, dy, dz, color='#8E4585')
PLT.show()

Maplotlib で 3D バーを作成するには、次の 3 つの (追加の) 操作を行うだけです。

  1. mpl_toolkits.mplot3dから Axes3D をインポートします。

  2. bar3dメソッドを呼び出します(私のスクリプトレットでは、Axes クラスのインスタンスであるax1によって呼び出されます)。メソッドのシグネチャ:

    bar3d(x, y, z, dy, dz, color='b', zsort="平均", *args, **kwargs)

  3. add_subplot、projection='3d'に追加の引数を渡します

代替テキスト

于 2010-08-17T20:19:17.753 に答える
1

私の知る限り、Matplotlib は設計上、あなたが言及した「3D」効果のような機能をサポートしていません。これについては、以前に読んだことを覚えています。その間に変わったかどうかはわかりません

詳細については、このディスカッション スレッドを参照してください。

アップデート

John Porter のmplot3dモジュールを見てください。これは標準の matplotlib の一部ではなく、カスタム拡張機能です。自分で使ったことがないので、その有用性についてはあまり言えません。

于 2010-08-17T11:21:06.927 に答える