相关疑难解决方法(0)

使用 scikit-learn 和 matplotlib 在 python 中重新创建决策边界图

在“如何从统计学习元素中绘制 k 最近邻分类器的决策边界?” . 在本例中,K-NN 用于将数据分为三类。我特别喜欢它以班级成员的概率作为“信心”的标志。

在此处输入图片说明

r并且ggplot似乎做得很好。我想知道,这是否可以在 python 中重新创建?我最初的想法倾向于scikit-learnmatplotlib。这是来自 scikit 的 iris 示例:

print(__doc__)

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets

n_neighbors = 15

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features. We could
                      # avoid this ugly slicing by using a two-dim dataset
y = iris.target

h …
Run Code Online (Sandbox Code Playgroud)

matplotlib knn python-3.x scikit-learn

4
推荐指数
1
解决办法
3794
查看次数

Matplotlib - 将文本标签向右移动“x”点

我有以下代码可以生成气泡图,然后将标签作为文本添加到图中:

fig, ax = plt.subplots(figsize = (5,10))

# create data
x = [1,1,1,1,1,1,1,1,1,1]
y = ['A','B','C','D',
     'E','F','G','H','I','']
z = [10,20,80,210,390,1050,2180,4690,13040,0]

labels = [1,2,8,21,39,105,218,469,1304]

plt.xlim(0.9,1.1)

for i, txt in enumerate(labels):
    ax.annotate(txt, (x[i], y[i]), ha='center', va='center', )

plt.scatter(x, y, s=z*4000, c="#8C4799", alpha=0.3)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我有垂直和水平居中的文本标签(即 1304,469 等),但理想情况下我希望它向右移动,以便远离气泡。我试过ha=right,但它只是轻推它一点点。

有什么我可以用来将它完全远离气泡的东西吗?即代码我可以把它如下for loop

for i, txt in enumerate(labels):
    ax.annotate(txt, (x[i], y[i]), ha='center', va='center', )
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
1
解决办法
2476
查看次数

调整散点图中的点大小

我在做

ax = df.plot(x=x_col, y=y_col, style=['o', 'rx'])
Run Code Online (Sandbox Code Playgroud)

但我不喜欢数据点是大圆圈。我有数千个数据点,所以它使情节丑陋。知道如何使点变小,即让它们成为实际的点,而不是圆圈吗?或者对这种散点图有什么替代建议?

python plot matplotlib scatter-plot pandas

2
推荐指数
1
解决办法
1万
查看次数

python散点图面积大小比例轴长度

我对此感到非常绝望,到目前为止我在 www 上找不到任何东西。

情况是这样的:

  • 我正在使用Python。
  • 我有 3 个数组:x 坐标、y 坐标和半径。
  • 我想用给定的 x 和 y 坐标创建散点图。

到目前为止,一切都按照我想要的方式进行。这是困扰我的事情:

  • 散点图中每个点的圆大小应由半径数组定义。
  • 坐标和半径的值具有相同的单位。更明确地说:假设我在 (1, 1) 处有一个点,半径指定为 0.5。然后我想在图中得到一个以 (1, 1) 为中心且边界穿过点 (1.5, 1)、(1, 1.5)、(0.5, 1) 和 (1, 0.5) 的圆

我正在努力解决的是找出绘图点与轴长度的比率。我需要使用点,因为据我所知,散点图的圆圈大小以点值给出。因此,如果假设我的轴从 0 到 10,我需要知道图中中间有多少个点。

有谁能够帮助我?或者还有其他方法可以做到这一点吗?提前致谢。

python axis scatter scatter-plot area

2
推荐指数
1
解决办法
3356
查看次数

我有数据 x,y 并且可以绘制散点图。如何使用 python 中的 matplot 更改频率标记?

我已经用谷歌搜索了一个小时左右,但没有找到我要找的东西。这是我在代码中所处的位置。

我使用 BS 将信息拉下来并将其保存到 CSV 文件中。CSV 有 x,y 坐标,我可以将其制作成散点图。

与此类似(大约有 1,500 个数据点,显然有 100 个组合)

x,y

0,6

1,2

0,7

4,6

9,9

0,0

4,4

1,2

ETC。

我想做的是使散点图上的点的大小与它们出现的频率相关。

df = pd.read_csv("book8.csv")

df.plot(kind = 'scatter',x='x',y='y')


plt.show()
Run Code Online (Sandbox Code Playgroud)

这些数组只是 0 到 9 之间的数字。我想将大小调整为 0-9 组合出现的频率。

我目前只有这个,显然它并不是很有用。

https://i.stack.imgur.com/daiXF​​.jpg

我是否需要将 x 和 y 设置到它们自己的数组中来完成此操作,而不是使用数据框(df)?

python matplotlib

2
推荐指数
1
解决办法
2317
查看次数

如何使用seaborn制作气泡图

   import matplotlib.pyplot as plt
    import numpy as np
    # data
    x=["IEEE", "Elsevier", "Others"]
    y=[7, 6, 2]
    import seaborn as sns
    plt.legend()
    plt.scatter(x, y, s=300, c="blue", alpha=0.4, linewidth=3)
    plt.ylabel("No. of Papers")
    plt.figure(figsize=(10, 4)) 
Run Code Online (Sandbox Code Playgroud)

我想制作一个如图所示的图表。我不确定如何提供期刊和会议类别的数据。(目前,我只包括一个)。另外,我不确定如何为每个类别添加不同的颜色。 气泡图

python bubble-chart seaborn

2
推荐指数
1
解决办法
7099
查看次数

标记大小/alpha 缩放与窗口大小/绘图/散点中的缩放

在 xy 图表上探索具有多个点的数据集时,我可以调整 alpha 和/或标记大小,以快速直观地了解这些点聚集最密集的位置。但是,当我放大或使窗口变大时,需要不同的 alpha 和/或标记大小来提供相同的视觉印象。

当我放大窗口或放大数据时,如何增加 alpha 值和/或标记大小?我在想,如果我将窗口面积加倍,我可以将标记大小加倍,和/或取 alpha 的平方根;和缩放相反。

请注意,所有点都具有相同的大小和 alpha。理想情况下,该解决方案适用于 plot(),但如果它只能使用 scatter() 完成,那也会有帮助。

matplotlib pandas

1
推荐指数
1
解决办法
1886
查看次数

如何使用 matplotlib 绘制特定像素大小的图形?

现在我正在做一个图形项目,它要求我绘制一个具有特定元素尺寸(以微米为单位)的图像。我正在使用 matplotlib 来完成这项任务。但是,我在尺寸控制方面遇到了一些问题。

我已经计算了所有的绘图数据来描述图像。它基本上是一个散布在网格交叉线上的网格,这个网格中有数百个列和行,每条交叉线的每个轴都有自己的宽度(以微米为单位)。示例图像是这样的:例子

我尝试了很多方法来控制元素或艺术家的大小。为了使一个像素等于一微米,我为这个数字设置了一个大的 DPI

DPI = 25400
plt.figure(dpi=DPI)
fig = plt.gcf()
size = (
    width / DPI,
    height / DPI
)
fig.set_size_inches(size)
Run Code Online (Sandbox Code Playgroud)

这可以确保一个像素是一微米。但是,我不知道如何控制像素大小的散点和线宽。默认的sinplt.scatterlinewidthinplt.plot不能帮助控制大小。

我想知道如何使用 matplotlib 以微米为单位控制它,或者我应该更改另一个工具来绘制此图形,甚至是任何其他工具来满足此要求?

python matplotlib python-3.x

0
推荐指数
1
解决办法
662
查看次数