¿Cómo se ajusta la escala logarítmica en un gráfico de dispersión (plot.scatter)?

publicado por: Anonymous Requiero presentar un gráfico de dispersión en escala logarítmica de los siguientes array: x =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39,…(Continue Reading)

三次元で点と点を繋げるには?

投稿者: Anonymous 下記の過去質問に関連したプログラムです。 matplotlibの表示について 10種類のテキストファイルを読み込んで、[] の格納して表示するプログラムとなっています。 データは今(X、Z)の二次元配列です。 import matplotlib.pyplot as plt import os import tkinter from tkinter import messagebox from tkinter import filedialog root = tkinter.Tk() root.title(‘微小山’) #タイトル root.geometry(‘400×200’) #サイズ 横x縦 messagebox.showinfo(‘select’,’測定データ’) fileType = [(‘テキストァイル’,’*.txt’)] #ファイルタイプを指定 iniDir1 = os.path.abspath(os.path.dirname(__file__)) #初期表示フォルダ filepath1 = filedialog.askopenfilename(filetypes=fileType,initialdir = iniDir1) messagebox.showinfo(‘選択したファイル’,filepath1) fileType = [(‘テキストァイル’,’*.txt’)] #ファイルタイプを指定 iniDir2 = os.path.abspath(os.path.dirname(__file__)) #初期表示フォルダ filepath2…(Continue Reading)

配列から0.1のみをとりだす方法、

投稿者: Anonymous matplotlib-quiverで東西、南北の風速を可視化しています。 U=nc2[‘uwnd_c’][0][0][0] V=nc2[‘vwnd_c’][0][0][0] plt.quiver(U,V,angles=’xy’,scale_units=’xy’,scale=0.5) で出力すると この画像が出ます。 やりたいことは、U==1.0、V==1.0のとき地図上に矢印を書きたいです。 そこで if U==1.0 or V==1.0: plt.quiver(U,V,angles=’xy’,scale_units=’xy’,scale=0.5) else: pass をやると The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() のエラーが出ます。 調べてもわかりませんでした。 どこがまちがっているのでしょうか。 参考にしたサイト https://algorithm.joho.info/programming/python/matplotlib-quiver/ 解決 質問内容から推測すると、以下のような感じでしょうか。 UとVが2次元の数値配列 U[y][x]またはV[y][x]のどちらかの値が1.0だったら有効なデータとし、それ以外の値の場合は両方とも0.0に置き換える 0.0に置き換えた所は、小さな点になって残るので、まだ完全では無いですが、 だいたいこんな処理になるのでは? rows = U.shape[0] cols = U.shape[1] for iy in…(Continue Reading)

pyqt5でのmatplotlibによるグラフ表示がうまくいかない

投稿者: Anonymous python3.5を使っています。pyqt5でmatplotlibを使ってみたところ、matplotlibで使えていた一部の機能が使えなくなりました。具体的にはx、y軸のラベル、グラフのタイトルが表示されないほか、x、y軸の表示範囲設定ができなりました。コードをどのように直せばよいのでしょうか。 import sys from PyQt5 import QtWidgets from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar import matplotlib.pyplot as plt import random import numpy as np class Window(QtWidgets.QDialog): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle(“グラフ”) self.setGeometry(300,300,500,500) self.figure = plt.figure() self.axes…(Continue Reading)

¿Cómo trazar la distancia de Manhattan entre dos puntos usando pyplot?

publicado por: Anonymous Necesito unir dos puntos con el módulo pyplot, pero que esa unión se visualice como la distancia de Manhattan (ver https://es.wikipedia.org/wiki/Geometr%C3%ADa_del_taxista) entre dichos puntos. He conseguido unir dos puntos con una línea: import matplotlib.pyplot as plt x=[2,5] y=[2,5] plt.axis([0,8,0,8]) plt.plot(x,y,’.-‘) plt.pause(3) plt.close() pero la linea que se dibuja entre estos puntos es…(Continue Reading)

pythonで行列を3次元のように2次元でプロットしたい。

投稿者: Anonymous python3.5を使っています。例えば3次元プロットを2次元に射影するためには次のようなコードで書けます。 import matplotlib.pyplot as plt import numpy as np f = lambda x,y: np.exp(-(x**2 + y**2)) x = np.linspace(-4,4,100) y = np.linspace(-4,4,100) X,Y = np.meshgrid(x,y) Z = f(X,Y) plt.figure() #ax = plt.subplot(121, projection=’3d’) #ax.plot_surface(X,Y,Z,cmap=’Reds’) ax = plt.subplot(111) cs = ax.contourf(X,Y,Z,100, cmap=’Reds’) plt.colorbar(cs) plt.show() これを実行すると次のような2次元グラフが得られます。 これを参考にして、ある行列を与えられたときに、行列の縦と横をx軸、y軸とし、行列の各要素をz座標の値として扱って同じような2次元グラフを書きたいです。次は試しに書いてみたコードです。 import matplotlib.pyplot as plt import numpy as np…(Continue Reading)

Error pandas y matplotlib could not convert string to float

publicado por: Anonymous Estoy tratando de dibujar en un gráfica los precios de celular según sus modelos Por ahora tengo esto import pandas as pd import csv import matplotlib.pyplot as plt import matplotlib.dates as mdates df1 = pd.read_csv(‘MercadoLibreMejor_items.csv’) print(df1) x = df1[‘Modelo’] y = df1[‘Precio’] #plot plt.plot(x,y) plt.show() La lectura del csv es correcta pero…(Continue Reading)

グラフを複数同時に出したい

投稿者: Anonymous 変数を式に代入する方法について。 D=0で計算していますが、D=[0,0.01,0.1]の三つをそれぞれf(x,v,t)に代入し、1つのグラフで比較するにはどうすればいいですか? import numpy as np import matplotlib.pyplot as plt def f(x, v, t): M = 1.0 E = 0.38 if (t <= 0.15) else 1.2 J = (2*0.8)/(120*np.pi) D = 0 return (M-E*np.sin(x)-D*v)/J t0 = 0.0 t1 = 5.0 N = 500 del_t = (t1-t0)/N # time grid tpoints = np.arange(t0, t1,…(Continue Reading)

matplotlib での plot でX軸のラベルに list の値を使いたい

投稿者: Anonymous PythonでPlot時のX軸のラベルについて教えてください。 x軸のラベルにlistの値を使いたいのですがどうすればよいでしょうか? # coding: UTF-8 import matplotlib.pyplot as plt x = [2,5,6] y = [1,2,3] plt.plot(x, y) plt.show() 上記だとX軸のラベルを2,5,6としたいのですが、2~6の範囲となってしまいます。(左側のグラフ) 左の画像ではなく、右の画像のようにしたいのです。 よろしくお願いします。 解決 この記事が応用できるでしょう。 plot with custom text for x axis points こんな感じになります。 # coding: UTF-8 import matplotlib.pyplot as plt x = [1,2,3] # X軸の数値は等間隔に設定 y = [1,3,10] # 記事のソースではなく図の方に数値を合わせる my_xticks = [‘2.00′,’5.00′,’6.00’] #…(Continue Reading)

k-means/matplotlib を使って、エネルギー消費量をクラスタリング。

投稿者: Anonymous matplotlibとk-meansを使用して、csvファイルをクラスタリングしようとしています。 私の扱っているcsvデータはエネルギー消費量に関するもので、以下のリンクのものとなります。 https://github.com/camenergydatalab/EnergyDataSimulationChallenge/blob/master/challenge2/data/total_watt.csv 一日ごとのエネルギー消費量を、低・中・高の三段階にクラスタリングしたいと考えています。 以下、コードとなります。 import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use(‘ggplot’) import pandas as pd from sklearn.cluster import KMeans MY_FILE=’total_watt.csv’ date = [] consumption = [] df = pd.read_csv(MY_FILE, parse_dates=[0], index_col=[0]) df = df.resample(‘1D’, how=’sum’) for row in df: if len(row) ==2 : date.append(row[0]) consumption.append(row[1]) import…(Continue Reading)

Como pintar una gráfica con matplolib a partir de un dataframe de Pandas

publicado por: Anonymous Ante todo he de decir que no tengo muchos conocimientos de programación porque llevo sólo 1 mes con ello. Tengo un dataframe obtenido a partir de un excel *xls en el que un campo “Barrio” refleja los barrios de Madrid y además tengo datos de densidades de población por año para cada…(Continue Reading)

matplotlibで描画した図の軸ラベルが表示されない

投稿者: Anonymous サンプルコードをコピペし,matplotlibで図を描画したのですが,下図のように左の図のx軸,y軸のラベルと判例が表示されません.トリミングされてるのかと思いplt.show()の前に plt.tight_layout() を追加したり fig = plt.figure(figsize=(10,6), facecolor=’w’) のfigsizeを(12,6)に変えてみたりしたのですが上手くいきません. 何か対処法がわかる方がいれば教えていただきたいです. 実行環境はpython3.5 (on anaconda), matplotlibはver.2.1.0です. 解決 この問題は、リンクなさっているサンプルコードで既に対応されています。plt.show() で出てくるウィンドウではなく、保存された画像の方ではラベルが表示されています。 なぜ? 今回のコードでは、画像を保存する際以下のように追加で設定を行っています(元のコードより引用します)。 plt.savefig(fnameF, dpi=200, bbox_inches=”tight”, pad_inches=0.1) 特に bbox_inches=”tight” が効いており、レイアウトが変わってラベルが表示されます。 回答者: Anonymous

matplotlib.pyplotのplotできれいな曲線が書けません。

投稿者: Anonymous python初心者なのですが、曲線(√(1-x^2))がうまく描けません。二番目の図みたいにするにはどうしたらいいでしょうか? import matplotlib.pyplot as plt import numpy x=rand(100) #100個の一様乱数 plt.plot(numpy.sqrt(1-x**2),x) 二番目の図のようなきれいな曲線にしたいですが、どうプログラムを書けばいいのでしょうか?曲線用の関数などあったら教えてください。 補足:二番目の図はrで書きました。 #R x=runif(100) #100個の一様乱数 curve(sqrt(1-x^2)) 解決 まず,なぜそのような出力になっているかと言うと,Numpyの配列の順番に点同士を結んでいるからで,sortすればよいというのは一つの回答ではあります. 一方で,そういったプロットを行う場合には, linspace という関数を使った方がよいです.これは,指定した区間上の等間隔な数列を得るための関数です. 例えば,numpy.linspace(0, 1, 11)とすると,以下のような配列が得られます. [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ] 参考まで,linspaceを用いたコード例と結果を示します. import matplotlib.pyplot as plt import numpy x = numpy.linspace(0, 1, 100) plt.plot(x, numpy.sqrt(1-x**2)) plt.show() 参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html 追記…(Continue Reading)

matplotlibでレーダーチャートを描画

投稿者: Anonymous matplotlibでレーダーチャートを描画したいのですが、うまくいきません。 以下を実行すると、新たに2次元のプロット図が作成されてしまい、レーダーチャートに反映されません。 plt.xticks(angles[:-1], categories, color=’grey’, size=12) ax.set_rlabel_position(180) plt.yticks([1,2,3,4,5], [“1″,”2″,”3″,”4”, “5”], color=”grey”, size=7) plt.ylim(0,5) スクリプト全文は以下です。 import pandas as pd import matplotlib.pyplot as plt from math import pi %matplotlib notebook list1=[[‘5.0′,’4.9′,’4.8’, ‘3.9’, ‘4.7’, ‘4.9’, ‘4.7’], [‘3.5′,’3.1′,’3.0′,’2.0′,’2.7′,’3.1′,’3.0’], [‘4.3′,’4.3′,’3.9′,’2.6′,’3.6′,’3.9′,’4.2’]] index1 = [“cluster0”, “cluster1”, “cluster2”] columns1 =[“class”,”labo”,”job”,”access”,”facility”,”friends”,”life”] data = pd.DataFrame(data=list1, index=index1, columns=columns1) categories=list(data) values_list = data.values.tolist() cluster0_list =…(Continue Reading)

axbar3d の平面上の影の非表示について

投稿者: Anonymous 言葉で説明しにくく申し訳ないです。 以下の図のaxbar3dのxy平面上の水色の四角い図形の影を取り除きたいのですが、どのような対処を施せばよいのでしょうか?公式サイトにも自分が調べる限り載っておらず、stackoverflowの海外の方の似たような質問があったのですが、少し違く悩んでおります。 以下に見本のコードを掲載します。 import numpy as np import matplotlib.pyplot as plt import math from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animation import matplotlib.colors as colors from matplotlib import cm n=10 m=10 theta = 3*(math.pi)/12 p_spot=[] P_spot=[] P = [[np.cos(theta),np.sin(theta)],[0,0]] Q = [[0,0],[np.sin(theta),-np.cos(theta)]] x_list=[] t_list=[] p_list=[] s_list=[] a = 1/math.sqrt(2) b = 1j/math.sqrt(2) p_map=[]…(Continue Reading)

pyqt5でAxe3Dを使ったときに、マウスでの視点変更やスケール変更がうまく行かない

投稿者: Anonymous pyqt5でAxe3Dを使って3dプロットをしたいです。Axe3Dで書いたグラフでは左クリックしながらドラッグで視点変更、右クリックしながら上下のドラッグでスケール変更が出来ます。ここで、グラフのキャンバスに機能を追加しようと思い、キャンバスを別クラスで記述しようとしました。その際、Axes3Dに本来ついていたマウスドラックでの視点やスケール変更の機能が失われてしまいました。下のGUIでは左側のキャンバスではマウスドラッグの機能が残っていますが、右のグラフではその機能は失われてしまい、ドラッグしても反応は有りませんでした。何がいけなかったのでしょうか。matplotlibのバージョンは3.1.3です。 表示されるGUI ソースコード import sys from PyQt5.QtWidgets import QDialog, QApplication, QVBoxLayout, QHBoxLayout from matplotlib.figure import Figure import numpy as np import matplotlib.pyplot as plt from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar from mpl_toolkits.mplot3d import Axes3D from PyQt5.QtCore import Qt, QTimer, QPoint from PyQt5.QtGui import QCursor class MyCanvas(FigureCanvas): #def…(Continue Reading)

各カラムごとのデータをラベルで色分けしながら1枚の散布図に出力したい

投稿者: Anonymous PythonやRのデータフレームで、各カラムのデータがある程度同じスケールにあるとき それぞれのデータをラベルで色分けしながら1枚の散布図で出力するにはどのようにすればよいでしょうか? irisデータによるサンプル https://gist.github.com/netj/8836201 上記のリンク先のCSVファイルを下の画像のように出力したいと考えています。 画像は下記のサイトのものを使用しています。 https://blog.magrathealabs.com/choosing-one-of-many-python-visualization-tools-7eb36fa5855f 解決 pythonの場合は、pandas.melt() と seaborn.catplot() を使うのが簡単です。 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv(‘iris.csv’) tmp = pd.melt(df, id_vars=[‘variety’], var_name=’measurement’, value_name=’value’) sns.catplot(x=’value’, y=’measurement’, hue=’variety’, data=tmp) plt.show() 回答者: Anonymous

pythonでGriewankを3dグラフで出力する際にエラー

投稿者: Anonymous https://www.cs.unm.edu/~neal.holts/dga/benchmarkFunction/griewank.html 上記のサイトを参考にGriewankの3Dグラフをpythonで出力しようとしたのですがエラーが出ます 全く原因が分からないので詳しい方がいましたら教えてください お願いします ソースコード import numpy as np import random import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import math def func1(self, chromosome): “””F6 Griewank’s function multimodal, symmetric, inseparable””” part1 = 0 for i in range(len(chromosome)): part1 += chromosome[i]**2 part2 = 1.0 for i in range(len(chromosome)): part2 *= math.cos(float(chromosome[i]) / math.sqrt(i+1.0)) return…(Continue Reading)

Indicar datos en grafico de barras con matplotlib

publicado por: Anonymous Estoy trabajando con una tabla que indica el Número del día, la hora del día y un número de visitas Y quiero crear un gráfico de barras que indique el número de visitas por cada hora (como el de la imagen) Pero, ¿cómo puedo indicar también las horas en cada barra? Algo…(Continue Reading)

3次元プロットにおける、グリッド線、軸の設定に関して

投稿者: Anonymous はじめまして、初投稿です。 以下の図のグリッド線を消したく、以下のコードを書きました。 ax.grid(color=”white”) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) plt.show() ただ、これだと、軸の目盛りが消えてしまい、軸の目盛りを変化前にのようにつけたいのですが、どのような操作をすればよいでしょうか? ちなみに、ax.set_ticks([])の[]を変えたら、 解決 ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) の箇所はコメントアウトして ax.grid(False) を追加してみてください 回答者: Anonymous

matplotlibでplotの線の色を変更する方法

投稿者: Anonymous pythonを用いて、plotの線の色を変更したいです。 一般的な、「赤」「青」などの一色の線に変更するやり方はわかりますが、 線の途中である値に対して、線が赤になったり青になったりすることは可能でしょうか? 以下に自作したscriptを示して、具体的になにを行いたいかを示します。 from pylab import * import random import numpy as np %matplotlib inline import matplotlib.pyplot as plt movements = np.arange(200) ##Storage information traceXs, traceYs = [], []; Speeds = []; Times = []; for trial in range(0, 1): ###moment information cur_x, cur_y = 0, 0; nxt_x, nxt_y = 0, 0;…(Continue Reading)

Crear y graficar arreglo de pendientes entre puntos

publicado por: Anonymous Buenas tardes a todos, estoy tratando de crear un array con numpy que contenga la pendiente entre cada uno de los puntos realizados con los arrays x e y para finalmente graficarlos con matplotlib. Estos son los pasos que sigo actualmente: 1. Calculo la pendiente para cada uno de los puntos. 2.…(Continue Reading)

Trabajar columna de tipo string con acentos en pandas

publicado por: Anonymous Estoy trabajando con un archivo csv y una de sus columnas es de tipo string y tiene acentos. El problema viene a que quiero mostrar una serie de gráficos mediante seaborn (librería de gráficos basda en matplotlib) y me muestra el siguiente error. ‘ascii’ codec can’t decode byte 0xc3 in position 21:…(Continue Reading)

Cambiar el rótulo de los ejes

publicado por: Anonymous Quiero cambiar el rótulo de los ejes pero no puedo, este es mi código: import pandas as pd import matplotlib as np import matplotlib.pyplot as plt #busco el archivo con el cual voy a trabajar: CWD_NORTE = pd.read_excel (“/home/florencia/Documentos/RADA2018/CWD_NORTE.xlsx”) CWD_NORTE.head cwdNorte = list(CWD_NORTE.values.flatten()) cwdNorte #quiero que cada fila sea un vector s1…(Continue Reading)

matplotlibのpyplotでsavefigをするとき、x軸のラベルの数が多すぎるとラベルが重なってしまう。

投稿者: Anonymous matplotlibのpyplotでsavefigをするとき、x軸のラベルの数が多すぎるとラベルが重なってしまい困るので、自動的に目盛りの間隔を調整してくれる方法を探しています。 グラフの生成サイズを大きくすることも考えましたが、それは他の実現したいこととの都合で不可能でした。 現在、グラフ生成に使っているコード(実際には、labelsとheightはより、要素数が大きくなります) labels = [‘2018-10-01′,’2018-10-02′,’2018-10-03′,’2018-10-04′,’2018- 10-05′,’2018-10-06′,’2018-10-07′,’2018-10-08′,’2018-10-09′,’2018-10- 10′,’2018-10-11′,’2018-10-12′,’2018-10-13′,’2018-10-14′,’2018-10- 15′,’2018-10-16′,’2018-10-17′,’2018-10-18′,’2018-10-19′,’2018-10- 20′,’2018-10-21′,’2018-10-22′,’2018-10-23′,’2018-10-24′,’2018-10- 25′,’2018-10-26′,’2018-10-27′,’2018-10-28′,’2018-10-29′,’2018-10- 30′,’2018-10-31′] height = [] for i in range(31): height.append(i) plt.bar(labels, height, align=”center”) plt.xticks(left, labels, rotation=’vertical’) plt.xlabel(‘Date’) plt.ylabel(‘times’) plt.savefig(‘plot.png’) plt.clf() 解決 labelsが文字列なので、目盛りの間隔を調整するためには、xticksでラベルを表示したい場所の番号とラベルとして表示される文字の両方を指定する必要があるので、次のようなコードになります。 import matplotlib.pyplot as plt labels = [‘2018-10-01′,’2018-10-02′,’2018-10-03′,’2018-10-04′,’2018-10-05’, ‘2018-10-06′,’2018-10-07′,’2018-10-08′,’2018-10-09′,’2018-10-10’, ‘2018-10-11′,’2018-10-12′,’2018-10-13′,’2018-10-14′,’2018-10-15’, ‘2018-10-16′,’2018-10-17′,’2018-10-18′,’2018-10-19′,’2018-10-20’, ‘2018-10-21′,’2018-10-22′,’2018-10-23′,’2018-10-24′,’2018-10-25’, ‘2018-10-26′,’2018-10-27′,’2018-10-28′,’2018-10-29′,’2018-10-30’, ‘2018-10-31’] height = range(31) plt.bar(labels, height) #間隔の日数を指定 ticks =…(Continue Reading)

¿Qué diferencia hay entre pyplot.show() y pyplot.figure.show() en Matplotlib?

publicado por: Anonymous Trabajando con Matplotlib para generar gráficas, no acabo de entender la diferencia entre estas dos formas de generar y mostrar una gráfica: Forma 1: import matplotlib.pyplot as plt plt.figure() plt.plot(x, y) plt.show() Forma 2: import matplotlib.pyplot as plt graph = plt.figure() plt.plot(x, y) graph.show() Sé que no hacen lo mismo, pero no…(Continue Reading)

Graficar vectores en Python

publicado por: Anonymous Verán, por parte de la uni me pidieron realizar una calculadora de números complejos que incluya ciertas funciones avanzadas, entre ellas debe seleccionarse un número complejo y graficarlo en un plano (x,y) donde “x” sea el coeficiente real y “y” el coeficiente imaginario. El caso es que lo estoy realizando en python…(Continue Reading)

matplotlibの3Dグラフ上の座標を得る

投稿者: Anonymous matplotlibで表示した3Dグラフ上で,クリックなどのイベントにより座標を取得する方法を探しています. 二次元のグラフですと下記のようなコードで正しく座標を得ることができます. from numpy.random import rand from pylab import figure, show def onclick(event): print ‘button=%d, x=%d, y=%d, xdata=%f, ydata=%f’%(event.button, event.x, event.y, event.xdata, event.ydata) fig = figure() ax = fig.add_subplot(111) ax.plot(rand(5)) fig.canvas.mpl_connect(‘button_press_event’, onclick) show() http://retrofocus28.blogspot.jp/2012/07/matplotlib.html しかし,同様のことを3Dグラフで行うと,x,y 座標が正しく表示されません. from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def onclick(event): print ‘button=%d, x=%d,…(Continue Reading)