我在使用Matplotlib创建两个并排的条形图时遇到了问题.如果没有线宽,一切都很好,但我一添加线宽,条形就会重叠.

下面是一个例子:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, figsize=(3,2), dpi=300)
shift=0.2
ax.bar([0-shift,1-shift,2-shift], [2,2,2], 2*shift, lw=2, color='blue',ec='darkblue')
ax.bar([0+shift,1+shift,2+shift], [2,2,2], 2*shift, lw=2, color='red', ec='darkred')

with overlap

我try 使用axes.transform()将线宽转换为数据并手动调整偏移,但它不起作用.

I would like to achieve something like: No overlap

推荐答案

一种方法是使用线宽的两倍,并用自身剪裁每条线.这里有一个例子,这也适用于通过Pandas 或海运创建的wine 吧.为了更好地看清正在发生的事情, colored颜色 Select 得稍微浅了一点.

import matplotlib as mpl
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, figsize=(3, 2), dpi=300)
shift = 0.2
ax.bar([0 - shift, 1 - shift, 2 - shift], [2, 2, 2], 2 * shift, lw=4, color='lightblue', ec='blue')
ax.bar([0 + shift, 1 + shift, 2 + shift], [2, 2, 2], 2 * shift, lw=4, color='pink', ec='red')

for bars in ax.containers:
    if type(bars) == mpl.container.BarContainer:
        for bar in bars:
            bar.set_clip_path(bar)

plt.show()

bars with non-overlapping edges due to line widths

Python相关问答推荐

Python上的Instagram API:缺少client_id参数"

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

try 将一行连接到Tensorflow中的矩阵

梯度下降:简化要素集的运行时间比原始要素集长

Pandas Loc Select 到NaN和值列表

计算分布的标准差

字符串合并语法在哪里记录

为什么\b在这个正则表达式中不解释为反斜杠

如何在BeautifulSoup/CSS Select 器中处理regex?

提取数组每行的非零元素

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

删除Dataframe中的第一个空白行并重新索引列

用0填充没有覆盖范围的垃圾箱

类型对象';敌人';没有属性';损害';

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

替换包含Python DataFrame中的值的<;

如何将列表从a迭代到z-以抓取数据并将其转换为DataFrame?