- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 15 个 barh 子图,如下所示:
我似乎无法使图例正常工作,因此我将在图表和图例中看到 [2,3,4] 作为单独的标签。
我在使此功能适用于子图时遇到问题。我的代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_bars_by_data(data, title):
fig, axs = plt.subplots(8,2, figsize=(20,40))
fig.suptitle(title, fontsize=20)
fig.subplots_adjust(top=0.95)
plt.rcParams.update({'font.size': 13})
axs[7,1].remove()
column_index = 0
for ax_line in axs:
for ax in ax_line:
if column_index < len(data.columns):
column_name = data.columns[column_index]
current_column_values = data[column_name].value_counts().sort_index()
ax.barh([str(i) for i in current_column_values.index], current_column_values.values)
ax.legend([str(i) for i in current_column_values.index])
ax.set_title(column_name)
column_index +=1
plt.show()
# random data
df_test = pd.DataFrame([np.random.randint(2,5,size=15) for i in range(15)], columns=list('abcdefghijlmnop'))
plot_bars_by_data(df_test, "testing")
我刚刚得到一个 8x2 的条形图,如上图所示。我怎样才能解决这个问题?我正在使用 Python 3.6 和 Jupyter Python 笔记本。
最佳答案
在代码中使用以下行。我无法将整个输出放在这里,因为它是一个包含大量子图的大图,因此显示了特定的子图。事实证明,首先您必须为子图创建一个句柄,然后传递图例值和句柄以生成所需的图例。
colors = ['r', 'g', 'b']
axx = ax.barh([str(i) for i in current_column_values.index], current_column_values.values, color=colors)
ax.legend(axx, [str(i) for i in current_column_values.index])
示例输出
关于python - Matplotlib 轴图例在 barh 中仅显示一个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467522/
这是一个包含 500 多个项目的 pandas 系列,我选择了前 10 个和后 10 个来绘制在一个 matplotlib 轴上,这是我手动绘制的图片: 数据在这里: bottom10 Out[12]
我有一些代码可以将 Excel 文件作为数据框打开。在此基础上绘制了一个 barh。但是,我无法显示栏中的值。 Excel 的列标题随文件的不同而变化,如图例所示。 数据框如下所示: 40+
我正在尝试为员工构建一个水平条形图,显示他们的计划工作时间与特定日期的实际工作时间。 我已经尝试了以下代码,但正如您在下面的“绘图”图像中所看到的,它将实际工作时间(蓝色)连接到计划时间的末尾(绿色)
我有一个 barh 条形图,图中只有两个条形图,但是在绘制它们时,它们相距很远: import numpy as np import matplotlib.pyplot as plt labels =
在matplotlib的函数barh的定义中: matplotlib.pyplot.barh(bottom, width, height=0.8, left=None, hold=None, **kw
我正在尝试制作一个类似这样的情节, 左侧图表(带图例的图)源自 df_2,右侧图表源自 df_1。 但是,我不能让两个并排的图共享 y 轴。 这是我目前的绘图方式: df_1[target_cols]
我一直在生成如下所示的条形图: 请注意,由于某种原因,标签上的垂直间距不均匀;我不确定这是否与我分配刻度的方式或实际放置文本的任何机制有关。相关代码: height_factor = 40.0 ind
我有 15 个 barh 子图,如下所示: 我似乎无法使图例正常工作,因此我将在图表和图例中看到 [2,3,4] 作为单独的标签。 我在使此功能适用于子图时遇到问题。我的代码: import pand
我是 python 和 matplotlib 的初学者。我想创建一个带有图例的水平条形图。我的代码: import matplotlib.pyplot as plt plt.rcdefaults()
我生成了一个条形图,如何在每个条形上显示条形的值? 当前剧情: 我想得到什么: 我的代码: import os import numpy as np import matplotlib.pyplot
TL'DR,垂直条形图以传统方式显示——事物从左到右排列。但是,当它转换为水平条形图(从bar 到barh)时,一切都颠倒了。即,对于分组条形图,不仅分组条的顺序是错误的,而且每个组的顺序也是错误的。
我正在尝试绘制水平堆叠条形图,但在顶部和底部得到了令人讨厌的大边距。我想摆脱它或控制大小。 这是一个示例代码和图: from random import random Y = ['A', 'B', '
在下面的代码中,bdate 和 edate 都是 datetime.datetime() 对象: pylab.barh(ypos, edate - bdate, left=bdate, height=
请看附件 我在python中有如下源码 def plotBarChartH(self,data): LogManager.logDebug('Executing Plotter.
我想绘制一个 5 x 4 的地 block 。相同的代码如下 fig, axis = plt.subplots(5, 4,figsize=[25,10]) i = 0 for channel in n
我正在尝试绘制 2 向条形图。我想反转 x1 的 x 轴,以便 0 位于两者的中间。我不断收到错误: AttributeError: 'BarContainer' object has no attr
我一直在这个网站和谷歌试图解决这个问题。 看来我缺少制作可绘制数据框的基本概念。 我试图确保有一列用于“Teams”的字符串和一列用于“Points”的整数 我仍然得到: TypeError: Emp
我正在使用 matplotlib 将 barh 绘图绘制到文件中。不幸的是,YTickLaels 有点太长,绘图区域不会自动向右移动。有没有办法自动将绘图区域向右移动,这样我就不会遇到不完整的 YTi
我是一名优秀的程序员,十分优秀!