【问题标题】:How to make two x-axes in left and right with scatter plot?如何用散点图在左右两边制作两个x轴?
【发布时间】:2021-03-11 07:05:26
【问题描述】:

我正在尝试使用散点图绘制一个集群,其中有两个 x 轴,在左侧和右侧,而不是在顶部和底部。我已经检查了类似的问题,但这似乎不是问题所在。 我试图让这两个图与左右两侧的 2 个 x 轴共享 y 轴,但我做不到。

这是我的阴谋,

但我希望我的情节可以这样显示 .

这是我尝试过的代码。

import pylab as py
filename1="ex_1.csv"
df1=pd.read_csv(filename1)
filename2="ex_21.csv"
df2=pd.read_csv(filename2)
x1 = df1['Dom']
y1 = df1['Sal']
s1 = df1['Size']
x2 = df2['Type']
y2 = df2['Sal']
s2 = df2['Size']
d  = 2.0

#plot 1
fig1 = plt.figure(figsize=(10,6))
fig, (gb1, gb2) = plt.subplots(nrows = 1, ncols = 2, figsize=(10,6),sharey = True)
gb1.scatter(x=x1, y=y1, s=s1*50, alpha=0.8, c="blue", label=x1)
gb2.scatter(x=x2, y=y2, s=s2*50, alpha=0.8, c="red")

【问题讨论】:

  • 欢迎来到本站。请澄清您到底想改变什么。是不是要关闭外面的刺?你想减少两个子图之间的填充吗?此外,如果您包含一个不需要数据文件的可运行示例,人们可以更轻松地试验您的代码。使用具有固定种子的随机数通常很有用。
  • Matplotlib 对如何使用 create and arrange subplotshow to create parasite axes 进行了很好的总结。

标签: python matplotlib plot scatter-plot


【解决方案1】:

如果您的类别不同,您可以只使用一个图并在两者之间画一条线。

import matplotlib.pyplot as plt
import numpy as np

ax = plt.subplot(111)
x1 = np.array(['A','B','C','A','B','C'])
y1 = np.array([1,2,3,4,5,6])

x2 = np.array(['X', 'Y', 'X', 'Y', 'Z', 'Z'])
y2 = np.array([1, 2, 3, 4, 5, 6])


ax.scatter(x1, y1, s=y1*50, c='b')
ax.scatter(x2, y2, s=y2*50, c='r')
ax.axline((2.5, 1), (2.5, 6), c='black')
ax.figure.show()

编辑:正如评论中指出的那样,将import pylab 更改为import matplotlib.pyplot as plt,因为pylab 会导致意外行为,matplotlib 强烈反对

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2016-09-11
    相关资源
    最近更新 更多