我被困在一些感觉应该相对容易的事情上.我下面的代码是基于我正在研究的更大项目的示例.我没有理由发布所有细节,所以请接受我带来的数据结构.
基本上,我正在创建一个条形图,我只是想弄清楚如何在条形图上添加值标签(在条形图的中心,或者在它上面).一直在寻找网络上的样本,但没有成功实现我自己的代码.我相信解决方案要么是'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) 我正在寻找一种在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) 我有一个带有多个不同场景的条形图,但是当我绘制它时,所有条形都会重复。请在我的代码下面找到。
我知道我一次只使用列表中的一个值,但是当我尝试使用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)