小编Dav*_*idG的帖子

最可靠的方法来自动选择matplotlib中的线条样式与seaborn相结合

我正在寻找一种可靠的方法来自动为我的情节选择线条样式.现在我有8行用于绘图,我希望自动选择可以区分的线型是可行的.

截至目前,我基本上有两种方式.设置标记或定义样式.两个人似乎都对seaborn有些问题.首先是使用循环仪:

plt.rc('axes', prop_cycle=cycler('linestyle', ['-', '--', ':', '-.']))
Run Code Online (Sandbox Code Playgroud)

如果我使用它,它要么覆盖seaborn设置,要么被seaborn覆盖,这取决于我先设置的那个.我在其中一个示例中找到的另一种方法是设置行的标记:

def makeStyles():
    markers = []
    for m in Line2D.markers:
        try:
            if len(m) == 1 and m != ' ':
                markers.append(m)
        except TypeError:
            pass

    styles = markers + [
        r'$\lambda$',
        r'$\bowtie$',
        r'$\circlearrowleft$',
        r'$\clubsuit$',
        r'$\checkmark$']
    return styles
Run Code Online (Sandbox Code Playgroud)

这里的问题是,相当一些标记看起来是相同的,这只是一条没有标记的线.

有没有其他方法可靠,适用于seaborn?

python matplotlib seaborn

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

显示在条形图中绘制的y轴值水平线

我使用(matplotlib.pyplot作为plt)matplotlib来绘制条形图.在该条形图上,我使用灰色的axhline()函数绘制了一条水平线.我希望水平线开始的点(y轴上的值= 42000)也应显示值,即42000.该怎么办?

这是我目前的形象:

在此输入图像描述

在下图中,请参阅'39541.52'点?我希望在我的图像上显示完全相同的值,我的点值是'42000'

在此输入图像描述

python matplotlib bar-chart

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

Python kivy - 如何减少 TextInput 的高度

我正在使用 kivy 为应用程序制作一个非常简单的 gui。没有什么复杂的,非常简单的布局。

尽管如此,我在使用 TextInputs 时遇到了困难......它们总是以全高显示,我无法使它们调整为“合理”的文本高度,例如高度。

我正在使用 kv 文件样式,因为我发现将它集成到现有应用程序中更简洁、更容易……我想尽可能减少应用程序的 gui-python 代码。

这是我为 TextInput 得到的(无用添加 gui 的其他部分)。

Python代码

# textInput.py
from kivy import require
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder

Builder.load_file('path/to/kv/file/textInput.kv')

require('1.10.0')

class MainScreen(BoxLayout):
    pass

class Test(App):
    def build(self):
        self.title = 'Testing textInput'
        return MainScreen()

if __name__ == '__main__':
    Test().run()
Run Code Online (Sandbox Code Playgroud)

KV代码

# textInput.kv
<MainScreen>
    orientation: 'vertical'

    # Third section title
    Label:
        size_hint: (1, .1)
        text: 'Setup Connection'
        font_size: 25

    # Third section Box
    BoxLayout: …
Run Code Online (Sandbox Code Playgroud)

python user-interface kivy kivy-language

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

在子图顶部画线以渲染缩放效果

我正在尝试绘制一个图,其中两个子图是第一个的缩放。我想做的是如下图所示:

在此处输入图片说明

尤其是黑线。我现在的代码只是绘制子图

import matplotlib.pyplot as plt
import numpy as np

t=np.arange(1000)
x=np.sin(np.arange(1000)/10)

plt.figure()
ax1 = plt.subplot(2,1,1)
plt.plot(t,x)

ax2 = plt.subplot(2,2,3)
plt.plot(t[100:200],x[100:200])

ax3 = plt.subplot(2,2,4)
plt.plot(t[600:700],x[600:700])

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

但是我不知道如何在图形顶部添加黑线(以制作缩放框效果)。我不知道如何开始。有人有想法吗?

python matplotlib

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

Seaborn regplot中点和线的不同颜色

Seaborn regplot文档中列出的所有示例都显示了相同的点和回归线颜色.更改color参数会同时更改.如何为点设置不同的颜色作为线?

python matplotlib seaborn

6
推荐指数
2
解决办法
5684
查看次数

ModuleNotFoundError:没有名为“Quartz”的模块

我正在尝试在 python3 上工作并使用 mac。我已经安装了pyobjc-core和pyobjc,但是错误说Quartz找不到。我对这种安装很陌生。有什么解决办法吗?

这是我的 pycharm 错误:

Traceback (most recent call last):
  File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/_pyautogui_osx.py", line 5, in <module>
    import Quartz
ModuleNotFoundError: No module named 'Quartz'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Thyme/PycharmProjects/DinosourBot/Bot.py", line 2, in <module>
    import pyautogui
  File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/__init__.py", line 110, in <module>
    from . import _pyautogui_osx as platformModule
  File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/_pyautogui_osx.py", line 7, in <module>
    assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html"
AssertionError: You must …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
2
解决办法
6849
查看次数

如何在matplotlib中为图中的每个子图设置标签?

让我们认为我在数据集中有四个特征,并且每次使用两个特征绘制散点图。我想分别为每个图提供标签。

fig,axes=plt.subplots(ncols=2,figsize=(10,8))
axes[0].scatter(x1,x2],marker="o",color="r")
axes[1].scatter(x3,x4,marker="x",color="k")
axes[0].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[0].set_label("Admitted")
axes[1].set_label("Not-Admitted")
axes.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在这里,我将得到两个散点图,但未显示标签。我想看到第一个图被承认为标签 ,第二个散点图不被承认

我可以通过使用plt.legend()但无法获取已创建的图来提供标签。

python data-visualization matplotlib

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

MatplotLib 3.0.1中ax.set_xlabel()和ax.xaxis.set_label()之间的区别

(这可能是一个天真的问题.请原谅我.)

我使用的是Python 3.7.1和M​​atplotLib 3.0.1.

在下面的简单代码中,我使用不同的方法为轴分配标签.从OO的角度来看,它们似乎是等同的.但只有x axis标签显示.为什么?

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-2,2,60)
y = np.linspace(-2,2,60)

xx, yy = np.meshgrid(x,y)

z = xx**2 + yy**3

surf = ax.plot_surface(xx, yy, z, cmap="viridis")

ax.set_xlabel('x axis')      # <====== This works
ax.yaxis.set_label('y axis') # <====== This doesn't work
ax.zaxis.set_label('z axis') # <====== This doesn't work
Run Code Online (Sandbox Code Playgroud)

在下图中,您只能看到x axis显示的标签.

在此输入图像描述

添加1

根据这里,似乎该matplotlib.axis.XAxis.set_label()方法应该工作. …

python matplotlib python-3.x mplot3d

6
推荐指数
2
解决办法
3570
查看次数

将顶部和底部值标签添加到颜色条

我想将顶部和底部值添加到我的颜色条中。因此,顶部值的范围是我的数据中值的最大数量,底部是我数据中的最小数量

在此输入图像描述

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

data = np.genfromtxt("E:\\data\\data1.txt", delimiter="\t")
minVal =  np.min(data[np.nonzero(data)])
maxVal =  np.max(data[np.nonzero(data)])

fig, ax = plt.subplots()
im = ax.imshow(data, cmap='Purples',
           interpolation='nearest',
           norm=matplotlib.colors.LogNorm(),
           vmin=minVal,vmax = maxVal,    
               )

cbar = fig.colorbar(im)

print("min ",minVal)
print("max", maxVal)

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

python plot matplotlib heatmap colorbar

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

圆形补丁作为 matplotlib 图例标记

我使用以下命令在图像上绘制一些圆圈:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as mpatches

image = np.zeros((20,20))

x_coords = [3,12]
y_coords = [3,12]

fig, ax = plt.subplots()
ax.imshow(image)

for a,b in zip(x_coords,y_coords):
    circle = plt.Circle((a, b), 2, color="yellow", fill=False, linewidth=2)
    ax.add_artist(circle)
Run Code Online (Sandbox Code Playgroud)

然后我可以使用这个问题的答案之一添加一个图例:

patches = [mpatches.Patch(color="yellow", label="Test")]
plt.legend(handles=patches, bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)

产生这个数字:

在此输入图像描述

如何将图例手柄从矩形更改为圆形(类似于在图像上绘制的内容)?

我尝试过使用

patches = [mpatches.Circle((0,0), 2, color="yellow", label="Test")]
plt.legend(handles=patches, bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)

它仍然在图例中产生一个矩形。我也尝试过

plt.legend(handles=[circle], labels=["Test"], bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)

仍然会产生一个矩形,但没有填充。期望的结果应该是有一个圆圈,其颜色和填充与图像上绘制的颜色和填充相同,作为图例标记。

我正在使用 Python 3.4 和 matplotlib 2.1.0

python matplotlib

5
推荐指数
0
解决办法
3222
查看次数