【问题标题】:Setting tick labels in mpld3在 mpld3 中设置刻度标签
【发布时间】:2016-05-28 13:21:25
【问题描述】:

我正在尝试使用一些数据创建一个简单的条形图(这里是硬编码的,但我会在某个时候从文件中读取它)。到目前为止,我能够获得条形图,但我希望属性“功能名称”位于每个条形下方。现在,我只得到数字 1 到 16。我可以做些什么来使每个栏下的每个功能?

我的代码:

import matplotlib.pyplot as plt
import numpy as np
import mpld3

fig, ax = plt.subplots()

N = 17
feature_name = ('AccountLength','Intlact','Vmailact','Vmailnumber','day minutes','day calls','day charge','evening minutes','evening calls','evening charge','night minutes','night calls','night charge','intl minutes','intl calls','intl charge','cust calls')
importance = (0.0304,0.0835,0.0222,0.0301,0.1434,0.0315,0.1354,0.0677,0.0268,0.0669,0.0386,0.0286,0.0371,0.0417,0.0521,0.0434,0.1197)
ind = np.arange(N)
width = 0.20
rects = ax.bar(ind, importance, width, color = 'r')
ax.grid(color='white', linestyle='solid')

ax.set_title("Why are my customers churning?", size=20)
ax.set_ylabel('Importance in percentage')
ax.set_xlabel('Feature Name')
ax.set_xticklabels( (feature_name) )
labels = (feature_name)
tooltip = mpld3.plugins.PointLabelTooltip(rects, labels=labels)
mpld3.plugins.connect(fig, tooltip)

mpld3.show()

编辑:事实证明,如果我使用 plt.show(),我可以看到刻度标签,但是当我尝试在 mpld3 中做同样的事情时,它不起作用。还想知道为什么工具提示没有出现。

【问题讨论】:

标签: python matplotlib mpld3


【解决方案1】:

我认为答案为时已晚,但也许这对其他人有帮助。

将文本设置为刻度标签似乎在 mpld3 包中确实存在一些问题,但是当我将一些数据绘制到某些范围值时,我能够做到这一点,然后将刻度设置为这个范围,最后设置勾选需要的标签。

from matplotlib import pyplot as plt
import numpy as np
import mpld3

fig, ax = plt.subplots()

feature_name = ('AccountLength','Intlact','Vmailact','Vmailnumber','day minutes','day calls','day charge','evening minutes','evening calls','evening charge','night minutes','night calls','night charge','intl minutes','intl calls','intl charge','cust calls')
importance = (0.0304,0.0835,0.0222,0.0301,0.1434,0.0315,0.1354,0.0677,0.0268,0.0669,0.0386,0.0286,0.0371,0.0417,0.0521,0.0434,0.1197)
ind = range(1, len(feature_name)+1)
width = 0.20

rects = ax.bar(ind, importance, width, color = 'r')

ax.grid(linestyle='solid')
ax.set_title("Why are my customers churning?", size=20)
ax.set_ylabel('Importance in percentage')
ax.set_xlabel('Feature Name')
ax.set_xticks(ind)
ax.set_xticklabels(feature_name)

mpld3.show()

结果:

有一个额外的工作人员来处理刻度轮换(mpld3 也不支持)。也许可以编写自定义插件来实现这一点。如果有人需要这个,我会更新答案。

【讨论】:

  • 我将您的代码复制并粘贴到我的笔记本中,并且在 X 轴上得到数字而不是文本。我正在使用 mpld3 0.5.2。我想知道您获取文本标签的设置有什么不同。
【解决方案2】:

mpld3 不支持设置刻度标签和位置。见issue 22

工具提示不会出现,因为PointLabelTooltip() 函数接受 matplotlib 集合或 Line2D 对象作为输入,而 plt.bar() 返回 BarContainer 对象。

UPD:刻度标签已使用 0.2 和 0.3git 版本进行测试。

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2019-10-29
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多