当前位置: 首页 > 知识库问答 >
问题:

使用seaborn(或matplotlib)创建由矩形组成的点组成的散点图

薛欣荣
2023-03-14

正如标题所说,我想创建一个散点图,但我希望图由矩形组成。到目前为止,显而易见的答案是将标记设置为“s”,如下所示:

+---+---+-------+
| X | Y | Data  |
+---+---+-------+
| 1 | 1 |     0 |
| 1 | 2 |     1 |
+---+---+-------+

import seaborn as sns
sns.scatterplot(data=df, hue='Data', x='X', y='Y',
                legend='full', marker='s')

如果我想增加或减少x和y的每个点之间的距离(在图上),该怎么办?就像上面的图一样,它们将是两个相等的正方形,彼此紧挨着,但如果我希望它们是长的或宽的矩形(但仍然只在点(1,1)和(1,2)处)呢?

最终的目标是创建一个图,它有一个长的(或者宽的,永远不是两个都有)矩形来表示点,就像上面的df中那样。这正是我想到的。如果有更好的方法请推荐!

共有1个答案

上官波鸿
2023-03-14

您可以使用x值作为x,y值作为底部创建条形图,并为条形设置您选择的矩形宽度和高度:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame({'x': np.random.randint(1, 10, 10),
                   'y': np.random.randint(1, 10, 10),
                   'data': np.random.randint(0, 3, 10)})
cmap = plt.get_cmap('rainbow')
norm = plt.Normalize(df['data'].min(), df['data'].max())
c = [cmap(norm(d)) for d in df['data'].values]
rwidth = 0.8
rheight = 0.6

plt.bar(df['x'], rheight, bottom=df['y'] - rheight / 2, width=rwidth, color=c)
plt.show()
 类似资料:
  • 散点图用于在水平轴和垂直轴上绘制数据点,它表示了因变量随自变量变化的趋势。通俗地讲,它反映的是一个变量受另一个变量的影响程度。 散点图将序列显示为一组点,其中每个散点值都由该点在图表中的坐标位置表示。对于不同类别的点,则由图表中不同形状或颜色的标记符表示。同时,您也可以设置标记符的颜色或大小。 下面示例,绘制了学生考试成绩的散点图,其中蓝色代表男孩成绩,红色表示女孩的成绩。 代码执行后,输出结果如

  • 本文向大家介绍matplotlib 散点图,包括了matplotlib 散点图的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的散点图 带有标记点的散点图            

  • 我正在使用matplotlib中的散点图来绘制一些点。我有两个1D数组,每个数组存储样本的x和y坐标。此外,还有另一个1D数组存储标签(用于决定点应以何种颜色绘制)。到目前为止,我编写了: 现在我想能够看到哪种颜色对应哪种标签?我在matplotlib中查找了图例的实现,就像这里的一样:如何为散射()添加图例?然而,他们建议为每个样本标签创建一个图表。然而,我所有的标签都在同一个1D数组(标签)。

  • 我有两个列表,日期和值。我想使用matplotlib绘制它们。下面创建了我的数据散点图。 创建线图。 但我真正想要的是一个散点图,其中的点由一条线连接。 与R中的类似: ,这给了我一个点的散点图,上面有一条连接点的线。 如何在python中实现这一点?

  • 问题内容: 我有一组X,Y数据点(约10k),很容易将其绘制为散点图,但我想将其表示为热图。 我浏览了MatPlotLib中的示例,它们似乎都已经从热图单元格值开始以生成图像。 有没有一种方法可以将所有不同的x,y转换为热图(其中x,y的频率较高的区域会“变暖”)? 问题答案: 如果你不想要六角形,可以使用的函数: 这将产生的热图。如果你想要,则可以拨打。

  • 问题内容: 我有闭合曲线的点坐标(吨),以x递增的顺序排序。 我已经通过matplotlib查看,但找不到任何东西。(也许我的关键字输入有误…?) 我尝试通过以下方式重新格式化数据: 随机选择一个点,找到其最近的邻居,然后再找到下一个最近的邻居,依此类推。它在有时数据不太一致的边缘失败(最近的邻居可能在曲线的另一侧)。 为了解决不一致的数据,我尝试检查两个点之间的坡度(被认为是最近的邻居)是否与先