标签: subplot

Matlab:重叠的子图标题

我正在使用subplot其中包含三个不同的图。每个情节都有自己的标签和标题。
问题是我保存时必须最大化绘图。否则,文本将相互重叠。
当我最大化它时,即使我使用 ESP 格式或任何矢量格式,子图的标签文本在图像中也会显得有点模糊。
我该如何解决这个问题?

matlab subplot

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

如何向子图添加轴?

我有一系列相关的函数,我用 绘制matplotlib.pyplot.subplots,并且我需要在每个子图中包含相应函数的缩放部分。

我开始像这里解释的那样这样做,当只有一个图但没有子图时它可以完美地工作。

如果我用子图来做,我只会得到一个图,其中包含所有函数。这是我到目前为止得到的一个例子:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.01)
sinx = np.sin(x)
tanx = np.tan(x)

fig, ax = plt.subplots( 1, 2, sharey='row', figsize=(9, 3) )

for i, f in enumerate([sinx, cosx]):
    ax[i].plot( x, f, color='red' )
    ax[i].set_ylim([-2, 2])

    axx = plt.axes([.2, .6, .2, .2],)
    axx.plot( x, f, color='green' )
    axx.set_xlim([0, 5])
    axx.set_ylim([0.75, 1.25])

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

该段代码给出了下图:

在此输入图像描述

如何在每个子图中创建新的轴和绘图?

python matplotlib subplot

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

如何绘制具有不同 colspan 的四个子图?

我尝试使用matplotlib.pyplot如下方式拟合四张图像:

| plot1 | plot2|
|    plot3     |
|    plot4     |
Run Code Online (Sandbox Code Playgroud)

我发现的大多数例子都涵盖了三个这样的图:

ax1 = plt.subplot(221)
ax2 = plt.subplot(222)
ax3 = plt.subplot(212)
Run Code Online (Sandbox Code Playgroud)

这成功地绘制了三个图(但是,我不明白它是如何完成的ax3)。现在,我想将情节 4 添加到此安排中。无论我尝试什么,我都无法成功。

你能指导我如何实现它吗?

python plot matplotlib subplot

3
推荐指数
2
解决办法
2582
查看次数

在 Matplotlib 中并排绘制两个热图

我有一个函数可以绘制 DataFrame 相关矩阵的热图。该函数如下所示:

def corr_heatmap(data):
    columns = data.columns
    corr_matrix = data.corr()

    fig, ax = plt.subplots(figsize=(7, 7))
    mat = ax.matshow(corr_matrix, cmap='coolwarm')

    ax.set_xticks(range(len(columns)))
    ax.set_yticks(range(len(columns)))
    ax.set_xticklabels(columns)
    ax.set_yticklabels(columns)
    plt.setp(ax.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
    plt.colorbar(mat, fraction=0.045, pad=0.05)
    fig.tight_layout()
    plt.show()

    return mat
Run Code Online (Sandbox Code Playgroud)

当使用 DataFrame 运行时,输出如下所示:

在此处输入图片说明

我想要做的是并排绘制这些热图中的两个,但我在这样做时遇到了一些麻烦。到目前为止,我所做的是尝试将每个热图分配给 AxesImage 对象并使用子图绘制它们。

mat1 = corr_heatmap(corr_mat1)
mat2 = corr_heatmap(corr_mat2)

fig = plt.figure(figsize=(15, 15))
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax1.plot(ma1)
ax2.plot(ma2)
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

TypeError: float() argument must be a string or a number, not 'AxesImage'
Run Code Online (Sandbox Code Playgroud)

有人会碰巧知道一种可以并排绘制两个热图图像的方法吗?谢谢你。

编辑

如果有人想知道我想做的最终代码是什么样的:

def corr_heatmaps(data1, data2, method='pearson'):

    # …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

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

“Line2D”对象没有属性“kind”

我刚刚开始学习 pandas,当我想制作 2013 年车站平均值的条形图时,创建一个 fig, ax = plt.subplots()对象并将该图添加到创建的 ax' 我在运行这部分代码时收到此错误' Line2D' 对象没有属性 'kind'

\n\n
\nfig,ax = plt.subplots(1)\nx= data.columns\ny=data['2013'].mean()\nax.plot(x,y,kind='bar')\n```````````````````````\n\n[this is my DATASET]\n\n                      L06_347   LS06_347    LS06_348\nTime            \n2009-01-01 00:00:00 0.137417    0.097500    0.016833\n2009-01-01 03:00:00 0.131250    0.088833    0.016417\n2009-01-01 06:00:00 0.113500    0.091250    0.016750\n2009-01-01 09:00:00 0.135750    0.091500    0.016250\n... ... ... ...\n2013-01-01 15:00:00 1.420000    1.420000    0.096333\n2013-01-01 18:00:00 1.178583    1.178583    0.083083\n2013-01-01 21:00:00 0.898250    0.898250    0.077167\n2013-01-02 00:00:00 0.860000    0.860000    0.075000\n11697 rows \xc3\x97 3 columns\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一方面,我尝试使用此代码选择所有不同年份的四月、五月和六月的所有数据

\n\n
data[(data.index.month == 4) & (data.index.month == 5) & (data.index.month == 6)]\n
Run Code Online (Sandbox Code Playgroud)\n\n …

datetime pandas subplot

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

子图之间的箭头

我决定尝试一下这个示例代码。我能够弄清楚如何在两个子图之间绘制一条直线,即使该线位于其中一个子图的边界之外。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

fig = plt.figure(figsize=(10, 5))
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
axs = [ax1, ax2]

# Fixing random state for reproducibility
np.random.seed(19680801)

# generate some random test data
all_data = [np.random.normal(0, std, 100) for std in range(6, 10)]

# plot violin plot
axs[0].violinplot(all_data,
                  showmeans=False,
                  showmedians=True)
axs[0].set_title('Violin plot')

# plot box plot
axs[1].boxplot(all_data)
axs[1].set_title('Box plot')

# adding horizontal grid lines
for ax in axs:
    ax.yaxis.grid(True)
    ax.set_xticks([y + …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

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

在循环中绘制子图

z = {'A': [0.3618426, 0.36146951], 'B': [1.8908799, 1.904695], 'C': [2.1813462e+08, 2.1833622e+08], 'D': [0.89925492, 0.89953589], 'E': [2.6356747, 2.6317911], 'F': [2.2250445e+08, 2.2501808e+08], 'G': [2.0806053e+08, 2.0691238e+08], 'H': [0.37242803, 0.37611806]}
k = [1,2]

for key in z:
plt.subplot(4,4,1)
plt.plot(k,[z[key][0],z[key][1]], 'ro-')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我会尽量说清楚。z 是一个大小不一的字典。我想做的是绘制字典数量,比如 4 列,但行应该根据生成的图数量增加,例如,如果有 16 个要绘制的键,我应该最终得到 4 行 4 列的数字。如何我可以这样做吗?

python matplotlib subplot

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

在情节次要情节中合并图例

我有几个组,每个组有几个类,我测量了连续值:

set.seed(1)

df <- data.frame(value = c(rnorm(100,1,1), rnorm(100,2,1), rnorm(100,3,1),
                           rnorm(100,3,1), rnorm(100,1,1), rnorm(100,2,1),
                           rnorm(100,2,1), rnorm(100,3,1), rnorm(100,1,1)),
                 class = c(rep("c1",100), rep("c2",100), rep("c3",100),
                           rep("c2",100), rep("c4",100), rep("c1",100),
                           rep("c4",100), rep("c3",100), rep("c2",100)),
                 group = c(rep("g1",300), rep("g2",300), rep("g3",300)))

df$class <- factor(df$class, levels =c("c1","c2","c3","c4"))
df$group <- factor(df$group, levels =c("g1","g2","g3"))
Run Code Online (Sandbox Code Playgroud)

并非数据中的每个组都具有相同的类,或者换句话说,每个组都具有所有类的子集。

我试图R plotly为每个组生成密度曲线,按类别进行颜色编码,然后使用plotlyssubplot函数将它们全部组合成一个图。

这就是我正在做的:

library(dplyr)
library(ggplot2)
library(plotly)


set.seed(1)

df <- data.frame(value = c(rnorm(100,1,1), rnorm(100,2,1), rnorm(100,3,1),
                           rnorm(100,3,1), rnorm(100,1,1), rnorm(100,2,1),
                           rnorm(100,2,1), rnorm(100,3,1), rnorm(100,1,1)),
                 class = c(rep("c1",100), rep("c2",100), rep("c3",100),
                           rep("c2",100), rep("c4",100), rep("c1",100),
                           rep("c4",100), rep("c3",100), rep("c2",100)),
                 group …
Run Code Online (Sandbox Code Playgroud)

r legend subplot plotly r-plotly

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

在 2x2 网格中绘制形状图

我试图在 2x2 子图中绘制 4 个 Shap 依赖图,但无法使其工作。我已经尝试过以下方法:

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10))
ax1 = plt.subplot(221)
shap.dependence_plot('age', shap_values[1], X_train, ax=ax1)
ax2 = plt.subplot(222)
shap.dependence_plot('income', shap_values[1], X_train, ax=ax2)
ax3 = plt.subplot(223)
shap.dependence_plot('score', shap_values[1], X_train, ax=ax2)
Run Code Online (Sandbox Code Playgroud)

和这个:

plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
shap.dependence_plot('age', shap_values[1], X_train)
plt.subplot(1,2,2)
shap.dependence_plot('income', shap_values[1], X_train)
plt.subplot(2,2,3)
shap.dependence_plot('score', shap_values[1], X_train)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

它不断将它们绘制在不同的行上,而不是 2x2 格式。

python matplotlib subplot shap

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

使用 Plots.jl 将一组图绘制为子图

该线程的延续:如何在 Julia Plots 中创建任意数量的子图

当我尝试时

using Plots
plot_array = Any[] 
for i in 1:5
    push!(plot_array, plot(rand(10))) # make a plot and add it to the plot_array
end
plot(plot_array)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

MethodError: no method matching Plots.Plot{Plots.PlotlyBackend}(::Char, ::Char, ::Char, ::Char, ...) 
Closest candidates are: Plots.Plot{Plots.PlotlyBackend}(::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

subplot julia plots.jl

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

标签 统计

subplot ×10

matplotlib ×6

python ×6

datetime ×1

julia ×1

legend ×1

matlab ×1

pandas ×1

plot ×1

plotly ×1

plots.jl ×1

r ×1

r-plotly ×1

shap ×1