【发布时间】:2022-01-24 16:01:46
【问题描述】:
我有以下数据,我想使用 for 循环在 Matplotlib 中生成多个棒棒糖图。我在这方面取得了部分成功。有几个方面我需要帮助:
- 将
plt.xticks设置为根据数据进行更新。我在下面的代码中设置了一个占位符来注释掉该部分。 - 如何转动图中顶部、右侧和底部的刺。我还有一个占位符,在下面的代码中注释掉了。
下面是我要绘制的数据
import pandas as pd
import matplotlib.pyplot as plt
data = {'v1': [24.57, 13.91, 13.72, 22.27, 8.90, 4.77, 6.72],
'v2': [4.8, 5.61, 18.96, 4.66, 22.53, 28.78, 20.15],
'v3': [17.31, 15.73, 14.62, 14.19, 13.83, 13.36, 10.96]
}
data2 = pd.DataFrame(data, index=['V{}'.format(x) for x in range(0, 7)])
print(data2)
还有我用来绘制数据的代码
for elem in data2:
data2 = data2.sort_values(by=[elem], ascending=True)
rng = range(1,len(data2.index)+1)
annotations = (data2[elem].values.tolist())
fig = plt.figure(figsize=(8, 5))
plt.hlines(y=rng, xmin=0, xmax=data2[elem], color='skyblue')
plt.plot(data2[elem], rng, "o")
plt.yticks(rng, data2.index, color='dimgrey')
# plt.xticks()
plt.tick_params(top=False, left=False, bottom=False, right=False, labelleft=True, labelbottom=True,
labelcolor='dimgrey')
plt.title("output - {}".format(elem), loc='center', color='dimgrey')
plt.xlabel('XD', color='dimgrey')
plt.ylabel('YD', color='dimgrey')
# [plt.spines[loc].set_visible(False) for loc in ['right', 'top', 'bottom']] # turn off spines
for i, label in enumerate(annotations):
plt.annotate(label, (data2[elem][i]+0.45, rng[i]),
color='dimgrey')
plt.show()
【问题讨论】:
标签: python pandas matplotlib