相关疑难解决方法(0)

在matplotlib条形图上添加值标签

我被困在一些感觉应该相对容易的事情上.我下面的代码是基于我正在研究的更大项目的示例.我没有理由发布所有细节,所以请接受我带来的数据结构.

基本上,我正在创建一个条形图,我只是想弄清楚如何在条形图上添加值标签(在条形图的中心,或者在它上面).一直在寻找网络上的样本,但没有成功实现我自己的代码.我相信解决方案要么是'text',要么是'annotate',但是我:a)不知道使用哪一个(一般来说,还没弄清楚何时使用哪个).b)无法看到要么呈现价值标签.非常感谢您的帮助,我的代码如下.提前致谢!

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option('display.mpl_style', 'default') 
%matplotlib inline

# Bring some raw data.
frequencies = [6, 16, 75, 160, 244, 260, 145, 73, 16, 4, 1]

# In my original code I create a series and run on that, 
# so for consistency I create a series from the list.
freq_series = pd.Series.from_array(frequencies)

x_labels = [108300.0, 110540.0, 112780.0, 115020.0, 117260.0, 119500.0, 
            121740.0, 123980.0, 126220.0, 128460.0, 130700.0]

# Plot the figure. …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib python-2.7 pandas

74
推荐指数
5
解决办法
13万
查看次数

为分类数据绘制多个条形图

我正在寻找一种在matplotlib中为每个值绘制多个条形图的方法.为数字数据,这可以是将偏移到X数据来实现,如例如描述在这里:

import numpy as np
import matplotlib.pyplot as plt

X = np.array([1,3,5])
Y = [1,2,3]
Z = [2,3,4]

plt.bar(X - 0.4, Y) # offset of -0.4
plt.bar(X + 0.4, Z) # offset of  0.4
plt.show()
Run Code Online (Sandbox Code Playgroud)

多个数字数据条

plt.bar()(和ax.bar())也自动处理分类数据:

X = ['A','B','C']
Y = [1,2,3]

plt.bar(X, Y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

类别处理

在这里,显然不可能添加偏移量,因为类别不与轴上的值直接关联.我可以手动为类别分配数值,并在x轴上设置标签plt.xticks():

X = ['A','B','C']
Y = [1,2,3]
Z = [2,3,4]
_X = np.arange(len(X))

plt.bar(_X - 0.2, Y, 0.4)
plt.bar(_X + 0.2, Z, 0.4)
plt.xticks(_X, X) # set labels …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

5
推荐指数
1
解决办法
1万
查看次数

Matplotlib 在一张图中绘制多个条形图

我有一个带有多个不同场景的条形图,但是当我绘制它时,所有条形都会重复。请在我的代码下面找到。

我知道我一次只使用列表中的一个值,但是当我尝试使用data[0]代替传递整个子数组时,我收到一个值不匹配错误:

ValueError: shape mismatch: objects cannot be broadcast to a single shape

我究竟做错了什么?我查看了PyPlot 示例另一个帖子,并且都将数组传递给ax.bar.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = [[20, 35, 30, 40], [25, 40, 45, 30], 
        [15, 20, 35, 45], [10, 25, 40, 15], 
        [50, 20, 45, 55], [10, 55, 60, 20]]
data_std = [[1, 2, 1, 2], [1, 2, 1, 2], [1, 2, 1, 2], 
            [1, 2, 1, 2], [1, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
1
解决办法
1万
查看次数