Python在带有图例的网格上绘制多个圆

积分

我想在 N x M 的网格上绘制各种颜色和相同大小的圆圈。在 ax,y 位置,可以是一个圆圈或什么都没有。

我希望每列都有 ax 标签(这将是一个星期)和一个 ylabel(这将是一个主题)。

现在,我找到了一种使用子图绘制圆圈的方法,但我无法获得文本和网格。

这是我绘制圆圈的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import Wedge
from plotly.graph_objs import *
from matplotlib.gridspec import GridSpec

def dual_half_circle(center, radius, angle=0, ax=None, colors=('w','k'), **kwargs):
    """
    Add two half circles to the axes *ax* (or the current axes) with the 
    specified facecolors *colors* rotated at *angle* (in degrees).
    """
    if ax is None:
        ax = plt.gca()
    kwargs.update(transform=ax.transAxes, clip_on=False)
    theta1, theta2 = angle, angle + 180
    w1 = Wedge(center, radius, theta1, theta2, fc=colors[0], **kwargs)
    w2 = Wedge(center, radius, theta2, theta1, fc=colors[1], **kwargs)
    for wedge in [w1, w2]:
        ax.add_artist(wedge)
    return [w1, w2]

这是显示所有内容的代码(我删除了颜色条件):

DF = pd.DataFrame(np.random.choice([True, False], size = (15, 10)))

fig, ax = plt.subplots()
for ii in range(0,DF.shape[1]):    
    for jj in range(0,DF.shape[0]):
        if DF[ii][jj]:
            dual_half_circle((ii, -1*jj), radius=0.3, colors=('b','g'), angle=90, ax=ax)
            ax.axis('equal')

for ii in range(0,DF.shape[1]):       
    plt.annotate(xy= (ii, 1), s= 'W'+str(ii), fontsize = 100, verticalalignment='center', horizontalalignment='center')

for jj in range(0,DF.shape[0]):
    plt.annotate(xy =(-1, -1*jj),s= 'subj '+str(jj), fontsize = 100, verticalalignment='center', horizontalalignment='center')

plt.show()

这是结果,我没有注释也没有网格

结果

我应该从子图更改为经典图,以便添加我想要的内容吗?感谢您的帮助!

存在的重要性欧内斯特

请尝试以下操作。(我还是不明白网格的东西,所以我把它省略了)

import matplotlib.pyplot as plt
from matplotlib.patches import Wedge
import pandas as pd
import numpy as np


def dual_half_circle(center, radius, angle=0, ax=None, colors=('w','k'), **kwargs):
    """
    Add two half circles to the axes *ax* (or the current axes) with the 
    specified facecolors *colors* rotated at *angle* (in degrees).
    """
    if ax is None:
        ax = plt.gca()
    theta1, theta2 = angle, angle + 180
    w1 = Wedge(center, radius, theta1, theta2, fc=colors[0], **kwargs)
    w2 = Wedge(center, radius, theta2, theta1, fc=colors[1], **kwargs)
    for wedge in [w1, w2]:
        ax.add_artist(wedge)
    return [w1, w2]

DF = pd.DataFrame(np.random.choice([True, False], size = (15, 10)))

fig, ax = plt.subplots(figsize=(8,13))
for ii in range(0,DF.shape[1]):    
    for jj in range(0,DF.shape[0]):
        if DF[ii][jj]:
            dual_half_circle((ii, -1*jj), radius=0.3, colors=('b','g'), angle=90, ax=ax)
            ax.axis('equal')

for ii in range(0,DF.shape[1]):       
    plt.annotate(xy= (ii, 1), s= 'W'+str(ii), fontsize = 10, verticalalignment='center', horizontalalignment='center')

for jj in range(0,DF.shape[0]):
    plt.annotate(xy =(-1, -1*jj),s= 'subj '+str(jj), fontsize =10, verticalalignment='center', horizontalalignment='right')

ax.set_xlim(-1,10)
ax.set_ylim(-15,3)
plt.axis("off")
plt.plot([-1,10], [-15,3], alpha=0)
plt.tight_layout()
plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

svg绘制带有弯曲文本的圆

来自分类Dev

使用ggplot绘制带有图例的图像

来自分类Dev

在2D阵列网格(JAVA)上绘制圆

来自分类Dev

如何在画布上绘制带有动画的圆轨迹的箭头?

来自分类Dev

如何在同心圆上绘制如下效果(带有金属光泽的光泽)?

来自分类Dev

如何在同心圆上绘制如下效果(带有金属光泽的光泽)?

来自分类Dev

Matplotlib:直接从.csv中导入和绘制带有图例的多个时间序列

来自分类Dev

在1个图形上绘制多个网格

来自分类Dev

绘制带有网格的实体框

来自分类Dev

如何在多个画布HTML5上绘制圆?

来自分类Dev

在圆上绘制点

来自分类Dev

在图例中绘制两个不同的数据框(按一个或多个变量分组),并带有不同的标签

来自分类Dev

带有图例标签的单行上的 matplotlib 图例标题

来自分类Dev

R在多个图的外部边缘上绘制中心图例

来自分类Dev

绘制带有图例和Pie标签的饼图

来自分类Dev

使用itextsharp C#在现有PDF上绘制圆

来自分类Dev

如何在画布上绘制具有径向渐变的圆?

来自分类Dev

用Python绘制圆

来自分类Dev

python-如何在带有多个项目的Argand图中添加图例?

来自分类Dev

带有网格系统的多个嵌套列

来自分类Dev

带有多个网格的模型的vao管理

来自分类Dev

如何使用 SLURM 在带有 CUDA 的 GPU 网格上运行多个作业

来自分类Dev

从网格绘制一个简单的圆

来自分类Dev

Python在网格网格中的节点上绘制值

来自分类Dev

在SVG上绘制圆的线段

来自分类Dev

无法在屏幕上绘制圆

来自分类Dev

如何使用ggplot2在辅助轴上绘制带有反向barplot的多个时间序列?

来自分类Dev

如何绘制带有网格的圆柱体?

来自分类Dev

在Python乌龟圆内绘制随机圆

Related 相关文章

热门标签

归档