小编Joh*_*anC的帖子

为什么三次样条的二阶导数看起来如此锯齿状?

我需要使用三次样条(我主要对高阶导数感兴趣),我从 scipy https://docs.scipy.org/doc/scipy-0.18.1/reference/ generated/scipy.interpolate 找到了这个例子。 CubicSpline.html(第一个带有 sin 函数的)。他们有这一行:plt.plot(xs, cs(xs, 2), label="S''"),我认为它应该绘制二阶导数。但 sin 的二阶导数是 -sin,而它们的函数确实看起来都是 -sin。我在这里缺少什么?我怎样才能真正得到二阶导数?谢谢你! 在此输入图像描述

python scipy cubic-spline

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

如何手动为分类变量的类型分配颜色?

我在下面的代码中创建了 2 个图。JobDomain我在列中有类别值

  • 类别1
  • 2类
  • 三类

下面的代码为上述类别生成 2 个图,每个图具有不同的颜色。我需要保持这 3 个类别的两个图具有相同的颜色。

colors = ["#F28E2B", "#4E79A7","#79706E"]

edu = (df.groupby(['JobDomain'])['sal']
                         .value_counts(normalize=True)
                         .rename('Percentage')
                         .mul(100)
                         .reset_index()
                         .sort_values('sal'))

coding = (df.groupby(['JobDomain'])['sal2']
                         .value_counts(normalize=True)
                         .rename('Percentage')
                         .mul(100)
                         .reset_index()
                         .sort_values('sal2'))

fig, axs = plt.subplots(ncols=2,figsize=(20, 6),sharey=True)

plt.subplots_adjust(wspace=0.4)

p=sns.barplot(x="sal",y="Percentage",hue="JobDomain",data=edu,
              ax=axs[0],palette=sns.color_palette(colors))
q=sns.barplot(x="sal2",y="Percentage",hue="JobDomain",data=coding,
              ax=axs[1],palette=sns.color_palette(colors))
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

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

如何解决“'PathCollection'对象没有属性'yaxis'”错误?

我是一名理学硕士学生,我曾经使用 OriginPro、Excel 和 Matlab 等商业软件包制作图表和绘图。尽管这些软件提供了良好的用户体验,但也存在一些主要缺点,因为它们依赖于特定的操作系统,并且通常非常昂贵。

因此,我开始使用 matplotlib 库和 VS Code 来学习 Python,但是我遇到了一些库函数和语句的问题,这些函数和语句似乎是 matplotlib 和 numPy 的标准,但它不起作用。

例如,我正在为散点图制作一些模板,但我无法控制小刻度,因为它无法识别语句xaxixyaxix

代码示例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, AutoMinorLocator

.
.
.

fig = plt.figure(figsize=(x_pixels/my_dpi, y_pixels/my_dpi), dpi=my_dpi)
ax = plt.scatter(x*format_x, y*format_y, s = size, alpha = transparency, color = color, label = legend_text)

.
.
.

# Major Ticks
plt.tick_params(axis = 'both', which = 'major', length = majorT_length, direction = majorT_direction, color = majorT_color, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib visual-studio-code

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

如何创建每个点有两种颜色的散点图?

我试图在 matplotlib 中同时绘制真实情况我的分类。

tsne目前,我仅在应用特征空间并使用以下代码添加边缘后绘制真实情况

from matplotlib.collections import LineCollection
cols=['rgbkm'[lbl] for lbl in list(data.y.cpu().numpy() - 1)]

lc = LineCollection(X_embedded[out_dict['edges']],linewidth=0.05)
fig = plt.figure()
plt.gca().add_collection(lc)
plt.xlim(X_embedded[:,0].min(), X_embedded[:,0].max())
plt.ylim(X_embedded[:,1].min(), X_embedded[:,1].max())
plt.scatter(X_embedded[:,0],X_embedded[:,1], c=cols)
Run Code Online (Sandbox Code Playgroud)

这给出了以下情节: 在此输入图像描述

同时,我希望通过以下方式为每个顶点着色:

在此输入图像描述

python matplotlib scatter-plot

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

Seaborn 多线图,仅一根线着色

我正在尝试使用 sns 绘制多线图,但仅将美国线保持为红色,而其他国家/地区为灰色

这是我到目前为止所拥有的:

df = px.data.gapminder()
sns.lineplot(x = 'year', y = 'pop', data = df, hue = 'country', color = 'grey', dashes = False, legend = False)
Run Code Online (Sandbox Code Playgroud)

但这不会将线条更改为灰色。我想在这之后,我可以单独添加红色的美国线......

python linechart matplotlib seaborn

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

Seaborn 热图 自定义色彩图

您好,我刚刚为seaborn 热图创建了自定义cmap,但是当我想使用它时,它没有显示正确的颜色。我已经一步一步完成了:

import seaborn as sns
import numpy as np 
import matplotlib
import matplotlib.pyplot as plt

matrix = np.array([[149030, 34],[7442, 12]])
norm = matplotlib.colors.Normalize(matrix.min(), matrix.max())
boundaries = [value for value in matrix.flatten().tolist()]
list.sort(boundaries)

colors = [[norm(boundaries[0]), "#90AFC5"], 
          [norm(boundaries[1]), "#336B87"], 
          [norm(boundaries[2]), "#2a3132"], 
          [norm(boundaries[3]), "#763626"]]
    
    
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", colors)

fig = plt.figure(figsize=(6, 6))
ax = plt.subplot() 
    

annot = np.array([[f"{matrix[0,0]}", f"{matrix[0,1]}"],
                  [f"{matrix[1,0]}", f"{matrix[1,1]}"]], dtype=object)    

sns.heatmap(matrix,
            annot=annot,
            annot_kws={"size": 11},
            fmt="",
            ax=ax,
            vmin=matrix.min(),
            vmax=matrix.max(),
            cmap=cmap,
            cbar=True,
            cbar_kws={'format': '%.0f%%', 'ticks': boundaries, 'drawedges': True},
            xticklabels=False,
            yticklabels=False)

Run Code Online (Sandbox Code Playgroud)

如您所见,我的输出有两个蓝色列,但我定义了不同的颜色:

正如你所看到的,有两个蓝色的柱子

python matplotlib heatmap seaborn

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

如何绘制图聚类系数的分布

我是 networkx 和 pyplot 的新手,我只是想知道如何绘制局部聚类系数的分布。绘制度数分布更加简单,因为 Degree_histogram 函数可以为您完成此操作,但我不知道该怎么做。

g = nx.erdos_renyi_graph(1000, 0.02, seed = None, directed = False)
gc = g.subgraph(max(nx.connected_components(g)))
lcc = nx.clustering(gc)
Run Code Online (Sandbox Code Playgroud)

python cluster-analysis matplotlib networkx

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

如何在matplotlib中找到两条绘制曲线之间的交点?

我想找到两条曲线的交点。例如下面的例子。在此输入图像描述 可以有多个交点。现在我通过查找之间的距离来查找交点x,y。但是,当交点位于(17-18 x 轴)之间时,这种方法有时无法给出准确的点,正如您在图中看到的那样。

我需要从曲线中获取所有点来解决这个问题。有什么方法可以全部获得吗?

python curve matplotlib

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

类型错误:barh() 获得参数“宽度”的多个值

我正在尝试制作一个图表,该图表以前是垂直的......我正在尝试使其水平。发生的情况是我收到错误:

类型错误: barh () 获得参数“宽度”的多个值。

有人可以帮忙吗?

barWidth = 1
plt.barh(r, bars1, color='#7f6d5f', edgecolor='white', width=barWidth, label="Lasso")
plt.barh(r, bars2, bottom=bars1, color='#557f2d', edgecolor='white', width=barWidth, label="Random Forest")
plt.barh(r, bars3, bottom=bars, color='#2d7f5e', edgecolor='white', width=barWidth, label="Decision Tree")
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

如何创建带有边缘直方图的热图(类似于联合图)?

我想绘制二维标量数据,我通常会使用matplotlib.pyplot.imshow或来绘制sns.heatmap。考虑这个例子:

data = [[10, 20, 30], [50, 50, 100], [80, 60, 10]]
fix, ax = plt.subplots()
ax.imshow(data, cmap=plt.cm.YlGn)
Run Code Online (Sandbox Code Playgroud)

3x3 imshow 绘图

现在我还想在顶部和右侧有一维条形图,显示每列/行中的值的总和 - 就像那样sns.jointplot。然而,sns.jointplot似乎只适用于分类数据,生成直方图(带有kind='hist')、散点图等 - 如果我想直接指定单元格的值,我不知道如何使用它。对于seaborn 来说这样的事情可能吗?

我的图中的轴y将是天(一个月内),x轴将是小时。我的数据如下所示:

包含小时、日期和值的 DataFrame

该字段Cost Difference应构成图中相应字段的阴影。

matplotlib heatmap seaborn

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

如何在Python中绘制根式方程

我有三个方程,如下所示:

请参阅此图像的方程

如何在 python 中为给定的 X1,Y1,X2,Y2,X3,Y3,t1,t2,t3,S 绘制它们的图形?

我尝试去除平方根,最后得到 4 次方程,然后尝试绘图,但我仍然得到 4 个解,我必须再次验证其中的两个正确根。是否有任何直接的方法或库来绘制这些类型的方程?

python math matplotlib sympy

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

具有交替单元宽度的 pcolormesh

我想制作一个 matplotlib colormesh,它不规则地缩放以使某些行和列比其他行和列更宽。

请记住,我对 matplotlib 不太熟悉,并且可能会忽略一个明显的解决方案。

假设我有以下代码:

plt.axes().set_aspect("equal")
maze = plt.pcolormesh(arr)
plt.show()
Run Code Online (Sandbox Code Playgroud)

其中arr是二维位数组,产生如下所示的颜色网格: 代表迷宫的颜色网格

我想减少每行和每列的宽度,以压缩上面迷宫的墙壁。

任何帮助将不胜感激,谢谢。

编辑:这是数据示例。它基本上只是一个由 1 和 0 组成的二维数组,但为了便于阅读,我已将其转换为字符串。

0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

如何创建基于 y 值的梯度阶梯图?

在 Python matplotlib 中,如何获得折线图或阶梯图中的线以显示基于 y 值的梯度?

示例图(在 Tableau 中制作):

在此输入图像描述

带有根据 x 值改变梯度的线的阶梯图代码,改编自此答案

fig, ax = plt.subplots(figsize=(10, 4))
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
y = [2, 3, 9, 10, 2, 9, 0, 1, 9, 1, -8]
T = np.linspace(0,1,np.size(x))**2
s = 1
for i in range(0, len(x)-s, s):
    ax.step(x[i:i+s+1], y[i:i+s+1],  marker='.', color=(0.0,0.5,T[i]))
ax.tick_params(axis='both', colors='lightgray', labelsize=8)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python linear-gradients seaborn

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