基于多个数据框列的带有刻度的条形图
Bar chart with ticks based on multiple dataframe columns
如何从我的数据框中的 bins 在 matplotlib(或 pandas)中制作条形图?
我想要下面这样的东西,其中 x 轴标签来自数据框中的 low
、high
(所以第一个刻度将显示为 [-1.089, 0)
和 y值是我的数据框中的 percent
列。
这是一个示例数据集。数据集已经是这个格式了(我没有未删减版)
df = pd.DataFrame(
{
"low": [-1.089, 0, 0.3, 0.5, 0.6, 0.8],
"high": [0, 0.3, 0.5, 0.6, 0.8, 10.089],
"percent": [0.509, 0.11, 0.074, 0.038, 0.069, 0.202],
}
)
display(df)
使用低、高列创建新列。
将 low 和 high 列中的 int 值转换为 str 类型,并将新的 str 设置为您想要的 [<low>, <high>)
表示法。
从那里,您可以使用 df.plot.bar()
从 df
直接创建条形图,将新创建的列指定为 x,将百分比指定为 y。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html
使用 IntervalArray.from_arrays
重新创建垃圾箱:
df['label'] = pd.arrays.IntervalArray.from_arrays(df.low, df.high)
# low high percent label
# 0 -1.089 0.000 0.509 (-1.089, 0.0]
# 1 0.000 0.300 0.110 (0.0, 0.3]
# 2 0.300 0.500 0.074 (0.3, 0.5]
# 3 0.500 0.600 0.038 (0.5, 0.6]
# 4 0.600 0.800 0.069 (0.6, 0.8]
# 5 0.800 10.089 0.202 (0.8, 10.089]
然后用 x
作为这些 bin 绘制:
df.plot.bar(x='label', y='percent')
如何从我的数据框中的 bins 在 matplotlib(或 pandas)中制作条形图?
我想要下面这样的东西,其中 x 轴标签来自数据框中的 low
、high
(所以第一个刻度将显示为 [-1.089, 0)
和 y值是我的数据框中的 percent
列。
这是一个示例数据集。数据集已经是这个格式了(我没有未删减版)
df = pd.DataFrame(
{
"low": [-1.089, 0, 0.3, 0.5, 0.6, 0.8],
"high": [0, 0.3, 0.5, 0.6, 0.8, 10.089],
"percent": [0.509, 0.11, 0.074, 0.038, 0.069, 0.202],
}
)
display(df)
使用低、高列创建新列。
将 low 和 high 列中的 int 值转换为 str 类型,并将新的 str 设置为您想要的 [<low>, <high>)
表示法。
从那里,您可以使用 df.plot.bar()
从 df
直接创建条形图,将新创建的列指定为 x,将百分比指定为 y。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html
使用 IntervalArray.from_arrays
重新创建垃圾箱:
df['label'] = pd.arrays.IntervalArray.from_arrays(df.low, df.high)
# low high percent label
# 0 -1.089 0.000 0.509 (-1.089, 0.0]
# 1 0.000 0.300 0.110 (0.0, 0.3]
# 2 0.300 0.500 0.074 (0.3, 0.5]
# 3 0.500 0.600 0.038 (0.5, 0.6]
# 4 0.600 0.800 0.069 (0.6, 0.8]
# 5 0.800 10.089 0.202 (0.8, 10.089]
然后用 x
作为这些 bin 绘制:
df.plot.bar(x='label', y='percent')